2013-12-11 26 views
8

私はコアデータに基づいてアプリケーションを開発中です。私はItemにフェッチをしています。フェッチされたオブジェクトは、すぐにアクセスされると確信しているので、返されたときにフォールトになることは望ましくありません。したがって、私はNOになるようにreturnsObjectsAsFaultsを設定します。しかし、それは私のためには機能しません。NSFetchRequest setReturnsObjectsAsFaults:が機能しません。

以下は、私がNSFetchedResultsControllerを設定する方法です。

NSString *cacheName = @"cache"; 
[NSFetchedResultsController deleteCacheWithName:cacheName]; 

NSManagedObjectContext *context = APPDELEGATE.managedObjectContext; 

NSFetchRequest *request = [[NSFetchRequest alloc] init]; 
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Item" inManagedObjectContext:context]; 
[request setEntity:entity]; 
NSSortDescriptor *sortDescriptor = [NSSortDescriptor sortDescriptorWithKey:@"dateCreated" ascending:YES]; 
[request setSortDescriptors:[NSArray arrayWithObject:sortDescriptor]]; 
[request setFetchBatchSize:20]; 
[request setReturnsObjectsAsFaults:NO]; 

NSFetchedResultsController *frc = [[NSFetchedResultsController alloc] initWithFetchRequest:request managedObjectContext:context sectionNameKeyPath:nil cacheName:cacheName]; 
[request release]; 

NSError *error = nil; 
BOOL result = [frc performFetch:&error]; 
if(!result){ 
    NSLog(@"Unresolved core data error"); 
} 

更新:実際には、フェッチされたオブジェクトはすべてフォールトです。

<_PFBatchFaultingArray 0x176f2bc0>(
<Item: 0x17613480> (entity: Item; id: 0x18ba3910 <x-coredata://5C2547EC-0420-4ED5-867D-087DEF4998EA/Item/p610> ; data: <fault>), 
<Item: 0x18b832e0> (entity: Item; id: 0x176dda50 <x-coredata://5C2547EC-0420-4ED5-867D-087DEF4998EA/Item/p611> ; data: <fault>), 
<Item: 0x18b97040> (entity: Item; id: 0x18b5f830 <x-coredata://5C2547EC-0420-4ED5-867D-087DEF4998EA/Item/p612> ; data: <fault>), 
<Item: 0x18bd1d40> (entity: Item; id: 0x18bc2f30 <x-coredata://5C2547EC-0420-4ED5-867D-087DEF4998EA/Item/p613> ; data: <fault>), 
<Item: 0x18b996c0> (entity: Item; id: 0x18b8f660 <x-coredata://5C2547EC-0420-4ED5-867D-087DEF4998EA/Item/p619> ; data: <fault>) 
) 
+3

あなたは*それは私のために動作しませんと何を意味するか、私たちを説明* –

+0

あなたはどのログ/テスト(CoreDataのデバッグログを)持っていますか過度のフォールティングを示しているか –

+0

@flexaddictedフェッチされたオブジェクトはまだフォルトです。 – Mindy

答えて

0

これも同様に観察されています。私の場合は、子の文脈で結果を取得していました。フェッチを主なコンテキスト上に変更したときは、returnsObjectsAsFaultsが適切に動作していました。

また、子コンテキストからフェッチした場合、returnsObjectsAsFaultsは期待どおりに機能しませんでした。

誰かが同じ理由のために、ここで同様の問題を抱えていた。 https://stackoverflow.com/a/14801402/1060314

関連する問題