0

我有一个使用 Core Data 的应用程序,它在模拟器上运行良好,但在设备上崩溃。我查看了有关将 sqlite 文件的读/写副本从主包复制到库中的帖子,但它仍然崩溃。当我保存新对象或修改现有对象时,它会崩溃,但仅限于某些实体,但不是所有实体(?!)。在模拟器上没问题。在对象保存并弹出到委托视图控制器后我得到的错误是:

由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:“ALL 或 ANY 运算符的左侧必须是 NSArray 或 NSSet。”

我已将以下代码添加到 AppDelegate 中,但没有明显的效果:

NSString *dbPath = [[NSBundle mainBundle] pathForResource:@"BCP" ofType:@"sqlite"];
    NSURL *storeURL = [NSURL fileURLWithPath:dbPath];
  NSString *libraryPath = [NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES) lastObject];
    NSString *targetPath = [libraryPath stringByAppendingPathComponent:@"BCP.sqlite"];

    if (![[NSFileManager defaultManager] fileExistsAtPath:targetPath]) {
        // database doesn't exist in your library path... copy it from the bundle

        NSError *error = nil;

        if (![[NSFileManager defaultManager] copyItemAtPath:dbPath toPath:targetPath error:&error]) {
            NSLog(@"Error: %@", error);
        }
    }
4

0 回答 0