私はコアデータに基づいてアプリケーションを開発中です。私は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>)
)
あなたは*それは私のために動作しませんと何を意味するか、私たちを説明* –
あなたはどのログ/テスト(CoreDataのデバッグログを)持っていますか過度のフォールティングを示しているか –
@flexaddictedフェッチされたオブジェクトはまだフォルトです。 – Mindy