【问题标题】:Accessing an sqlite3 file with Core Data使用 Core Data 访问 sqlite3 文件
【发布时间】:2013-09-21 07:31:28
【问题描述】:

我正在编写 Ray Wenderlich 的核心数据教程的第二部分。我没有读取包含默认数据的文件,而是尝试读取在他的 SQLite3 教程中创建的实际 Failed Bank 数据文件。当我尝试创建 Store 并打开文件时,程序抛出异常。

这里是代码sn-p

- (NSPersistentStoreCoordinator *) persistentStoreCoordinator
{

    if (_persistentStoreCoordinator != nil) {
        return _persistentStoreCoordinator;
}

NSURL *storeURL = [[self applicationDocumentsDirectory] URLByAppendingPathComponent:@"banklist.sqlite3"];

if (![[NSFileManager defaultManager] fileExistsAtPath:[storeURL path]]) {

    NSURL *preloadURL = [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"banklist" ofType:@"sqlite3"]];
    NSError *err = nil;

    if (![[NSFileManager defaultManager] copyItemAtURL:preloadURL toURL:storeURL error:&err]) {
        NSLog(@"Opps, couldn't copy preloaded data");
    }
}

NSError *error = nil;
_persistentStoreCoordinator = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:[self managedObjectModel]];

if (![_persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:storeURL options:nil error:&error]) {
    NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
    abort();
}    

return _persistentStoreCoordinator;

}

这是一个例外:

2013-09-16 20:19:57.549 FailedBankCD[4086:c07] CoreData: error: (1) /Users/artletter1/Library/Application Support/iPhone Simulator/6.1/Applications/ 处的数据库 I/O 错误524B84E3-94D6-40A3-8847-DD15A99B22A2/Documents/banklist.sqlite3。 SQLite 错误代码:1,'没有这样的表:Z_METADATA' 2013-09-16 20:19:57.552 FailedBankCD[4086:c07] 未解决的错误错误域 = NSCocoaErrorDomain 代码 = 256“操作无法完成。(可可错误 256。)”用户信息 = 0x854b560 {NSUnderlyingException = I/O /Users/artletter1/Library/Application Support/iPhone Simulator/6.1/Applications/524B84E3-94D6-40A3-8847-DD15A99B22A2/Documents/banklist.sqlite3 处的数据库错误。 SQLite 错误代码:1,'没有这样的表:Z_METADATA',NSSQLiteErrorDomain=1},{ NSSQLiteErrorDomain = 1; NSUnderlyingException = "/Users/artletter1/Library/Application Support/iPhone Simulator/6.1/Applications/524B84E3-94D6-40A3-8847-DD15A99B22A2/Documents/banklist.sqlite3 处的数据库 I/O 错误。SQLite 错误代码:1, '没有这样的表:Z_METADATA'"; }

谢谢!

罗伊

【问题讨论】:

  • 如果您真正链接到您正在尝试的工作,这将有所帮助。但是,从外观上看,您的数据库不包含 Core Data 所需的 Z_METADATA 表。您不能将任何 sqlite 数据库连接到您知道的 Core Data...
  • 没错,您需要Core Data 所期望的表和列。

标签: iphone ios objective-c core-data sqlite


【解决方案1】:

要完成您打算做的事情,您必须使用 sqlite3 API 浏览您的 sqlite 文件的表,插入新的核心数据实体,用数据填充它们并保存到不同的文件。 .

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-09-26
    • 1970-01-01
    • 2020-04-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多