0

データをフェッチしようとしていますが、結果が空です!
まず、1 つの NSFetchedResultsController からのデータを含むテーブルがあります。ここまでは、私のコードは正しく、データがあることもわかっています。
しかし、その後、その NSFetchedResultsController をフィルタリングするので、フィルターなしのレコード、つまりすべてのレコードを含む別の NSFetchedResultsController が必要になります。そのため、同じコードを使用して、別の NSFetchedResultsController を使用してデータを再度取得しようとしていますが、結果は常に空です!!!.
これは私が使用している関数です:

+(NSFetchedResultsController*)fetchedResultsControllerForEntity:(NSString*)entityName titleKey:(NSString*)titleKey sectionNameKeyPath:(NSString*)sectionNameKeyPath{

      NSFetchRequest *request=[self fetchRequestForEntity:entityName titleKey:titleKey sectionNameKeyPath:sectionNameKeyPath];    

      return [[[NSFetchedResultsController alloc] initWithFetchRequest:request 
                                            managedObjectContext:[self managedContext] 
                                            sectionNameKeyPath:sectionNameKeyPath 
                                            cacheName:[NSString stringWithFormat:@"%@.%@.%@",entityName,sectionNameKeyPath,titleKey]]autorelease];
 }



+(NSFetchRequest *) fetchRequestForEntity:(NSString*)entityName titleKey:(NSString*)titleKey sectionNameKeyPath:(NSString*)sectionNameKeyPath{

    NSFetchRequest *request=[[[NSFetchRequest alloc]init]autorelease];
    request.entity=[NSEntityDescription entityForName:entityName inManagedObjectContext:[self managedContext]];
    NSSortDescriptor* titleSortDescriptor=titleKey?[[NSSortDescriptor alloc ]initWithKey:titleKey ascending:YES]:nil;
    NSSortDescriptor* sectionSortDescriptor=sectionNameKeyPath?[[NSSortDescriptor alloc ]initWithKey:sectionNameKeyPath ascending:YES]:nil;
    NSMutableArray * sortDescriptors=[[NSMutableArray alloc]init];
    if(sectionNameKeyPath){
        [sortDescriptors addObject:sectionSortDescriptor];
        [sectionSortDescriptor release];
    }
    if(titleKey){
        [sortDescriptors addObject:titleSortDescriptor];
        [titleSortDescriptor release];
    }

    request.sortDescriptors=sortDescriptors;
    [sortDescriptors release];

    request.fetchBatchSize=20;
    return request;
}

同じコードを使用している場合、なぜ NSFetchResultsController が空になるのかわかりません!!!
別のエンティティからデータをフェッチしようとしましたが、結果も空です...
なぜ見つからないのですか?
ありがとう

4

2 に答える 2

0

私はすでに私の問題を解決しました。NSFetchedResultsController オブジェクトの SET メソッドを再宣言するだけです。

-(void)setFetchedItems:(NSFetchedResultsController *)newFetchedItems{
    [fetchedItems release];
    fetchedItems=[newFetchedItems retain];
    [fetchedItems performFetch:NULL];
}

それが、私のオブジェクトが常に空だった理由だと思います。オブジェクトだから

于 2012-11-27T00:31:02.237 に答える
0

同じものを使用するだけNSFetchedResultsControllerです。fetchRequestフェッチしたいデータを反映するようにプロパティを変更するだけです。たとえば、特定のエンティティのすべてのインスタンスを取得するには、次を使用します

self.fetchedResultsController.fetchRequest.predicate = nil;
[self.fetchedResultsController performFetch:&error]; 

NSFetchedResultsControllerDelegate正しく設定されていれば、テーブル ビューは自動的に更新されるはずです。

于 2012-11-23T00:14:37.887 に答える