2012-04-29 12 views
1

私はコアデータを使用するアプリケーションを開発しています。 iOS 5では、何の問題もありません。Core DataがiOS 4で正しく設定されないのはなぜですか?

しかし、iOS 4では、情報を保存しようとするとエラーメッセージが表示されます(正確には、ココアエラー134030、「No such file or directory」)。ドキュメントフォルダを見ると、SQLファイルはありません。私はすでにこれをデバッグしており、これらのメソッドのどれもがエラーまたはnilポインタを生成しません。

最も奇妙な部分:メソッドaddPersistentStoreWithTypeはエラーを返しませんが、同時にsqliteファイルは作成されません。

私のアプリは、ドキュメントフォルダに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]; 
} 
+0

永続ストアを定義するコードを含めてください。 – jrturton

+0

コードを追加しました。ありがとうございます。ところで、私はすでにこれをデバッグしましたが、これらの方法のいずれかにエラーがあります。 –

答えて

0

私は問題を解決したものを発見:

書かれた上記の各メソッドが呼び出されたとき、私は再びオブジェクトを作成していたのではなく、それはすでに返すために存在していたかどうかをチェックします。コードは今のように、iOS 4でも動作しています。

0

時には、あなたはあなたのファイルの拡張子momを使用し、時にはmomd必要があります。最初のファイルはディレクトリを参照するファイルです。

ファイルを正しくロードするために、mom拡張ファイルを使用する必要があることがありました(フレームワークのリソースの場合はディレクトリがありません)。おそらくそれがこれかもしれない。

関連する問題