NSFetchRequest setReturnsObjectsAsFaults:不起作用

Min*_*ndy 8 core-data objective-c fault

我正在开发基于Core Data的应用程序.我正在接受Item.返回时我不希望获取的对象出错,因为我确信它们会立即被访问.因此,我设置returnsObjectsAsFaultsNO.但是,它对我不起作用.

以下是我如何设置我的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");
}
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

更新:实际上,所有获取的对象都是错误的.

<_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>)
)
Run Code Online (Sandbox Code Playgroud)

Ada*_*lla 1

我也观察到了这一点。就我而言,我是在子上下文中获取结果。当我将获取更改为在主上下文上时,则returnsObjectsAsFaults表现正常。

同样,如果我从子上下文中进行提取,returnsObjectsAsFaults则不会按预期工作。

出于同样的原因,有人在这里遇到了类似的问题: https ://stackoverflow.com/a/14801402/1060314