0

私はいくつかの問題で立ち往生し、2日間探した後、解決策を見つけましたが、なぜそれが機能するのかわかりませんでした。

まず、次のコードを使用してNSFetchedResultsControllerを初期化します(多くの自動生成されたように見えます)。

- (NSFetchedResultsController *)fetchedResultsController {

if (fetchedResultsController != nil)
    return fetchedResultsController;

NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Profile"
                                          inManagedObjectContext:self.managedObjectContext];
[fetchRequest setEntity:entity];
[fetchRequest setFetchBatchSize:20];

NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"lastName" ascending:YES];
NSArray *sortDescriptors = [[NSArray alloc] initWithObjects:sortDescriptor, nil];
[fetchRequest setSortDescriptors:sortDescriptors];

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

[aFetchedResultsController release];
[fetchRequest release];
[sortDescriptor release];
[sortDescriptors release];

return fetchedResultsController;

}

コメントされた文字列を見てください-これらの文字列はありませんでした、そして私がデータを要求したとき-私は何も得られませんでした(そしてそれはそこにありました!)。その行のコメントを外すと、動作を開始します。明らかなようですが、私が以前に見たすべての例はその線ではありませんでした。そして、彼らは働きます。どうしてそれができますか?何が間違っているのか知りたいだけです。

4

1 に答える 1

3

[aFetchedResultsController performFetch:&error];データをフェッチするには、ある時点で呼び出す必要があります。例では、アクセサー以外のどこかでデータをフェッチした可能性があります (ただし、アクセサーでは問題ありません)。

于 2010-04-25T23:36:06.747 に答える