我正在使用 CoreData 构建一个 iOS 应用程序。我的一小部分用户(大约 1/1000)报告说应用程序在启动后不久就崩溃了。我怀疑持久存储协调器未能将数据库添加为持久存储。我无法重现测试中的任何错误,也无法从我的用户那里获得任何调试信息。有谁知道此方法产生的任何常见错误?
- (NSPersistentStoreCoordinator *)persistentStoreCoordinator {
if (persistentStoreCoordinator_ != nil) return persistentStoreCoordinator_;
NSURL *storeURL = [[self applicationDocumentsDirectory] URLByAppendingPathComponent:@"databasefile.sqlite"];
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_;
}
最佳答案
您可以查看 Core Data Constants Reference但是如果没有任何调试数据,它对你没有多大好处。
我唯一想检查的是:(1) 不小心写入或覆盖代码中其他地方的商店,例如您打算通过复制文件来备份文件,而不是部分覆盖它。 (2) 改变文件的权限。
我在 MacOS 上见过这两种情况,但从未在 iOS 上见过。该商店位于文档文件夹中,并且有一个非常通用的名称,因此可以想象,在 iOS 4.x 下,您可以在其上复制一个文件。
由于您没有对持久性存储做任何花哨的事情,我认为它极不可能是崩溃的原因。如果您使用标准样板代码,那么您正在谈论的是经过高度测试和改进的代码。我会怀疑某种类型的资源,例如在我怀疑商店之前,应用程序包中的图像或音频文件。
关于iOS:NSPersistentStoreCoordinator addPersistentStoreWithType:configuration:URL:options:error 会导致什么错误:,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6298028/