最近我为我的不同域模型(代表持久数据的一个子集)添加了一些并发访问。我崩溃报告表明,我现在在上iOS7,iOS8上& iOS9一些错误绊倒,这一切似乎是基于NSPersistentStoreCoordinator在尝试访问sqlite文件时引发错误NSSQLiteErrorDomain = 26
NSSQLiteErrorDomain = 26,NSUnderlyingException =在路径文件不 似乎是一个SQLite数据库 在我的位置标注在源代码
可惜我不能复制它,我真的不能想象,sqlite的文件不会在某些设备上存在,因为我有我的应用程序包出货。
- 在我的代码中是否有一个缺陷,阻止我访问sqlite文件?
- 除了丢失文件外,是否还有可能发生这种错误?
继承人为我的模型单身的初始化和NSManagedObjectContext
+ (id) sharedModel {
static id sharedModel = nil;
static dispatch_once_t onceToken;
dispatch_once(&onceToken,^{
sharedModel = [[self alloc] initWithStoreURL: kDefaultStoreURL];
});
return sharedModel;
}
- (id) initWithStoreURL:(NSURL *)storeURL {
self = [super init];
if (self) {
// create managed object model
NSURL * modelURL = [[NSBundle mainBundle] URLForResource: @"MyApp" withExtension: @"momd"];
NSManagedObjectModel *objectModel = [[NSManagedObjectModel alloc] initWithContentsOfURL: modelURL];
// create persistent store coordinator
NSError * error = nil;
NSPersistentStoreCoordinator * storeCoordinator = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:objectModel];
if (![storeCoordinator addPersistentStoreWithType: NSSQLiteStoreType configuration:nil URL:storeURL options:nil error:&error]) {
CLS_LOG(@"Unresolved error %@, %@", error, [error userInfo]);
// this is where the error occurs
abort();
}
// init managedObjectContext
context = [[NSManagedObjectContext alloc] initWithConcurrencyType: NSMainQueueConcurrencyType];
[context setPersistentStoreCoordinator:storeCoordinator];
_mainContext = context;
_someDomainModel1 = [[SomeDomainModel1 alloc] initWithContext:_mainContext];
_someDomainModel2 = [[SomeDomainModel2 alloc] initWithContext:_mainContext];
}
return self;
}