我正在使用 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_;
}
Run Code Online (Sandbox Code Playgroud)
您可以查看核心数据常量参考,但如果没有任何调试数据,它对您没有多大好处。
我认为要检查的唯一一件事是:(1)意外地写入或覆盖代码中其他位置的存储,例如您打算通过复制文件来备份文件,而不是部分覆盖它。(2) 更改文件的权限。
我在 MacOS 上见过这两种情况,但从未在 iOS 上见过。该商店位于文档文件夹中,并且具有非常通用的名称,因此可以想象,在 iOS 4.x 下,您可以将文件复制到其顶部。
由于您没有对持久存储做任何花哨的事情,我认为它极不可能是崩溃的原因。如果您使用标准样板代码,那么您正在谈论的是经过高度测试和完善的代码。在怀疑商店之前,我会怀疑应用程序包中某种类型的资源,例如图像或音频文件。
| 归档时间: |
|
| 查看次数: |
2480 次 |
| 最近记录: |