0

私は比較的新しい iPhone 開発者であり、CoreData がどのように機能するかを理解するためにアプリケーションを構築しようとしています。

何かが保存されているかどうかを検出できるようにする機能を実装しようとしています。そうであれば、それらのオブジェクトを削除するオプションをユーザーに提供します。

シミュレーターとは対照的に、デバイスでデータを取得するときに考慮すべきタイミングの問題があるかどうか疑問に思いました。

XCode ウィザードを使用して単純なコア データ アプリを作成し、UITableViewController クラスを使用していくつかのデータを表示しました。

RootViewController クラスから次のコード スニペットがあります。

- (void)viewDidAppear:(BOOL)animated {
    [super viewDidAppear:animated];

    NSSet* obj = nil;
    NSManagedObjectContext *context = [self.fetchedResultsController managedObjectContext];    
    obj = [context registeredObjects]; 

    if (obj.count == 0)
    {
        // Do stuff to add initial data to store 
    }
    else
    {
        // Do stuff to delete objects from store if user wants
    }
}

このコードを (以前にストアに追加した) シミュレーターで実行すると、obj.count にゼロ以外の値が返されますが、デバイスで実行すると、以前に追加した場合でも obj.count は常にゼロになります。店舗。

私が間違っているかもしれないアイデアはありますか?

おそらく、私が達成しようとしていることに対する私の全体的なアプローチは間違っています......

4

1 に答える 1

0

フォローアップとして、おそらく私が尋ねるべき質問は、これを行うかどうかです(これもRootViewController内で):

- (NSFetchedResultsController *)fetchedResultsController {

<snippet_begin>

NSFetchedResultsController *aFetchedResultsController = 
[[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest managedObjectContext:self.managedObjectContext sectionNameKeyPath:nil cacheName:@"Root"];
aFetchedResultsController.delegate = self;
self.fetchedResultsController = aFetchedResultsController;

NSSet* obj = nil;
NSManagedObjectContext *context = [self.fetchedResultsController managedObjectContext];    
obj = [context registeredObjects];

</snippet_end>

}

コンテキストが有効になる時間は決定論的ですか?

于 2010-10-19T12:03:11.830 に答える