使用Core Data访问sqlite3文件

时间:2013-09-17 01:49:20

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

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

以下是代码段

- (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:错误:(1)/ Users / artletter1 / Library / Application Support / iPhone Simulator / 6.1 / Applications /中数据库的I / O错误524B84E3-94D6-40A3-8847-DD15A99B22A2 /文档/ banklist.sqlite3。 SQLite错误代码:1,'没有这样的表:Z_METADATA' 2013-09-16 20:19:57.552 FailedBankCD [4086:c07]未解决的错误错误Domain = NSCocoaErrorDomain Code = 256“操作无法完成。(Cocoa错误256.)”UserInfo = 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'“; }

谢谢!

罗伊

1 个答案:

答案 0 :(得分:0)

要完成您打算执行的操作,您必须使用sqlite3 API浏览sqlite文件的表,插入新的Core Data实体,用数据填充它们并保存到其他文件。