最近我爲我的不同域模型(代表持久數據的一個子集)添加了一些併發訪問。我崩潰報告表明,我現在在上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;
}