0

CoreData を使用しており、次のコマンドを実行すると、多数のオブジェクトが返されます。

 [Contact findAll];

NSFetchrequestただし、そのように単純にセットアップすると、オブジェクトが0になります。

    NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];

    fetchRequest.entity = [NSEntityDescription entityForName:@"Contact" inManagedObjectContext:self.context];
    fetchRequest.sortDescriptors = [NSArray arrayWithObject:[[NSSortDescriptor alloc] initWithKey:@"title" ascending:YES]];

    self.fetchedResultsController = [[NSFetchedResultsController alloc] 
                                     initWithFetchRequest:fetchRequest
                                     managedObjectContext:self.context
                                     sectionNameKeyPath:nil
                                     cacheName:nil];

    NSError *error;
    NSArray *array = [self.context executeFetchRequest:fetchRequest error:&error];

ここで私が間違っていることを教えてください。私は Predicate セットを持っていないので、同じ数のオブジェクトを取得することが期待されますが、0 個のオブジェクトとerror = nil.

self.contextnil ではないことに注意してください。

4

2 に答える 2

2

RESTKit を使用している場合は、RESTKit が独自の Core Data コンテキスト/ストアをセットアップしており、手動で行っている場合は、Apple の Xcode テンプレートによって提供されるデフォルトのものを使用していると思います。使用を中止してself.contextRESTKit からコンテキストを取得するか、または などの RESTKit の便利なメソッドのいずれかを使用しobjectsWithFetchRequest:ます。

于 2012-04-25T12:30:06.273 に答える
1

0.10以降のRestKitは、スレッドごとのオブジェクトストアを維持します。RestKitがデータを処理していない場合(つまり、RKRequestQueueは終了しているが、マッピングを処理している場合)、これは注意が必要な場合があります。

ActiveRecordカテゴリを使用して外国のストアにアクセスできます。

NSManagedObjectContext *restContext = [[[RKObjectManager sharedManager] objectStore] managedObjectContextForCurrentThread];
NSArray *allTexts = [TextEntity findAllInContext:restContext];

お役に立てれば!

于 2012-04-25T12:57:33.707 に答える