3

Core Data で奇妙な問題が発生しています。特定のビュー コントローラーで、コア データのオブジェクトからビューを読み込んでいます。アプリを実行すると、このビューを初めてロードしたとき、Core Data はフェッチから何も返しません。そのため、Core Data を再作成すると、その後ビューが表示されるたびに、Core Data からオブジェクトが正しくフェッチされます。ただし、アプリを起動するたびに Core Data に何も見つからず、オブジェクトを最初から作成し直す必要があります。

では、アプリの実行中は Core Data オブジェクトが保持され、起動間は保持されないのはなぜでしょうか? オブジェクトを削除するために何もしていません。

編集:そして、コアデータに実際にあるものを表示する方法はありますか? 私が見ることができるファイルか何かのように?これにより、これをデバッグしやすくなります。

4

2 に答える 2

1

変更後にコンテキストを保存していることを確認してください。テンプレートの方法は次のとおりです。

- (void)saveContext {
    NSError *error = nil;
    NSManagedObjectContext *managedObjectContext = self.managedObjectContext;
    if (managedObjectContext != nil) {
        if ([managedObjectContext hasChanges] && ![managedObjectContext save:&error]) {
            // Replace this implementation with code to handle the error appropriately.
            // abort() causes the application to generate a crash log and terminate. You should not use this function in a shipping application, although it may be useful during development.
            NKLOG(@"Unresolved error %@, %@", error, [error userInfo]);
            abort();
        }
    }
}

データベースを開きたい場合は、SQLite Managerと呼ばれるこの Firefox アドオンを試すことができます

.sqlite ファイルを検索すると、アプリのデフォルト パスは次のようになります。

/Users/YOUR_USER/Library/Application Support/iPhone Simulator/IOS_VERSION/Applications/GENERATED_HASH/Documents/YOUR_APP.sqlite

于 2013-05-23T19:18:07.117 に答える