2013-12-11 5 views
8

Ich arbeite an einer Anwendung basierend auf Core Data. Ich mache einen holen auf Item. Ich möchte nicht, dass die abgerufenen Objekte fehlerhaft sind, wenn sie zurückgegeben werden, da ich sicher bin, dass sie sofort aufgerufen werden. Daher setze ich returnsObjectsAsFaults auf NO. Es funktioniert jedoch nicht für mich.NSFetchRequest setReturnsObjectsAsFaults: funktioniert nicht

Unten ist, wie ich meine NSFetchedResultsController einrichten.

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"); 
} 

Irgendwelche Ideen?

Update: Tatsächlich sind alle abgerufenen Objekte Fehler.

<_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

erklären uns, was meinst du mit * es nicht für mich funktioniert * –

+0

Haben Sie logs/Tests (Coredata Debug-Protokolle) Übermäßige Fehler anzeigen? –

+0

@flexaddicted Die abgerufenen Objekte sind immer noch Fehler. – Mindy

Antwort

0

Ich habe dies auch beobachtet. In meinem Fall habe ich die Ergebnisse in einem Kindkontext abgerufen. Als ich den Abruf im Hauptkontext änderte, verhielt sich returnsObjectsAsFaults korrekt.

Noch einmal, wenn ich den Abruf von einem Kindkontext ausgeführt habe, returnsObjectsAsFaults hat nicht wie erwartet funktioniert.

Jemand war hier ein ähnliches Problem hat, aus dem gleichen Grund: https://stackoverflow.com/a/14801402/1060314

Verwandte Themen