Core Data を使用するアプリを開発しています。iOS 5 では問題ありません。
しかし、iOS 4 では、情報を保存しようとするとエラー メッセージが表示されます (正確には、Cocoa エラー 134030 と「そのようなファイルまたはディレクトリはありません」)。ドキュメント フォルダを見ると、SQL ファイルがありません。私はすでにこれをデバッグしましたが、これらのメソッドのいずれもエラーやnil
ポインターを引き起こしません。
最も奇妙な部分: メソッド addPersistentStoreWithType はエラーを返しませんが、同時に sqlite ファイルは作成されません。
1 行で、私のアプリはドキュメント フォルダーに sql ファイルを作成していません。繰り返しますが、これは iOS 4 でのみ発生します。
アプリが iOS 4 で sqlite ファイルを作成しないのはなぜですか?
//Core Data stack
- (NSManagedObjectContext *)managedObjectContext
{
NSPersistentStoreCoordinator *coordinator = [self persistentStoreCoordinator];
if (coordinator != nil)
{
__managedObjectContext = [[NSManagedObjectContext alloc] init];
[__managedObjectContext setPersistentStoreCoordinator:coordinator];
}
return __managedObjectContext;
}
- (NSManagedObjectModel *)managedObjectModel
{
NSURL *modelURL = [[NSBundle mainBundle] URLForResource:@"Practi" withExtension:@"momd"];
__managedObjectModel = [[NSManagedObjectModel alloc] initWithContentsOfURL:modelURL];
if (__managedObjectModel == nil)
{
NSLog(@"NSManagedObjectModel in AppDelegate == nil");
}
return __managedObjectModel;
}
- (NSPersistentStoreCoordinator *)persistentStoreCoordinator
{
NSURL *storeURL = [[self applicationDocumentsDirectory] URLByAppendingPathComponent:@"MyAppDataBase.sqlite"];
NSError *error = nil;
__persistentStoreCoordinator = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:[self managedObjectModel]];
if (![__persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:storeURL options:nil error:&error])
{
NSLog(@"APPDELEGATE Unresolved error %@, %@", error, [error userInfo]);
}
return __persistentStoreCoordinator;
}
- (NSURL *)applicationDocumentsDirectory
{
NSString *docsDirectory = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];
return [NSURL fileURLWithPath:docsDirectory];
}