エラーであることがわかったエラーを解決するために一日中取り組んできましたNSInternalInconsistencyException
。表示されるエラー コンソール メッセージは、「この NSPersistentStoreCoordinator には永続ストアがありません。保存操作を実行できません。」また、「実行が中断されました。理由: EXC_BAD_ACCESS (コード=1、アドレス=0x1)」と表示されます。
App Delegate に次のコードがあります。
- (void)saveContext
{
NSError *error = nil;
NSManagedObjectContext *managedObjectContext = self.managedObjectContext;
if (managedObjectContext != nil) {
if ([managedObjectContext hasChanges] && ![managedObjectContext save:&error]) {
NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
abort();
}
}
}
#pragma mark Core Data stack
- (NSManagedObjectContext *)managedObjectContext {
if (_managedObjectContext != nil) {
return _managedObjectContext;
}
NSPersistentStoreCoordinator *coordinator = [self persistentStoreCoordinator];
if (coordinator != nil) {
_managedObjectContext = [[NSManagedObjectContext alloc] init];
[_managedObjectContext setPersistentStoreCoordinator: coordinator];
}
return _managedObjectContext;
}
- (NSManagedObjectModel *)managedObjectModel {
if (_managedObjectModel != nil) {
return _managedObjectModel;
}
_managedObjectModel = [NSManagedObjectModel mergedModelFromBundles:nil];
return _managedObjectModel;
}
- (NSPersistentStoreCoordinator *)persistentStoreCoordinator
{
if (_persistentStoreCoordinator != nil) {
return _persistentStoreCoordinator;
}
NSURL *storeURL = [[self applicationDocumentsDirectory] URLByAppendingPathComponent:@"shindy.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;
}
#pragma mark Application's documents directory
- (NSURL *)applicationDocumentsDirectory
{
return [[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask] lastObject];
}
これに似た他の質問をよく読んだところ、私のコードには一貫性があり、この問題は発生していないようです。それでも、私は...
アプリのクリーニングと削除、および再インストールの両方を試しました。デバイスとシミュレーターの両方でアプリを試しました。追加した URLPath の名前「shindy.sqlite」を、これまでに使用したことのないさまざまな名前に変更しました。また、アプリにストアを作成させるために[self saveContext];
、メソッドで強制的にインスタンス化しようとしました。applicationDidFinishLaunching
問題を解決しようとする試みはすべて、単に同じエラーを返しました。他に何を試すべきかわかりません。