我有一个使用 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);
}
}