2013-12-11 4 views
8

Я работаю над приложением, основанным на Core Data. Я делаю выборку на Item. Я не хочу, чтобы возвращаемые объекты были вызваны ошибкой при возврате, потому что я уверен, что они будут доступны сразу. Таким образом, я установил returnsObjectsAsFaults равным NO. Однако это не работает для меня.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