2011-08-11 73 views
5

将NSFetchRequest结果类型设置为NSDictinaryResultType时,返回零对象。如果我删除setPropertiesToFetch和setResultType,则返回所有对象。核心数据NSFetchRequest setResultType:NSDictionaryResultType不起作用

任何想法?

NSFetchRequest *request = [[NSFetchRequest alloc] init]; 
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Alert" inManagedObjectContext:_managedObjectContext]; 
[request setEntity:entity]; 

NSDictionary *entityProperties = [entity propertiesByName]; 
[request setPropertiesToFetch:[NSArray arrayWithObject:[entityProperties objectForKey:@"test"]]]; 
[request setResultType:NSDictionaryResultType]; 

NSError *error; 
NSArray *result = [_managedObjectContext executeFetchRequest:request error:&error]; 

if (result == nil) { 
    NSLog(@"Error: %@", [error localizedDescription]); 
} 

回答

10

问题是我需要在插入新对象后保存mangedObjectContext。一旦我做到了,我就会得到我期待的结果。

+0

是的,这是一个真正的陷阱。使用NSDictionaryResultsType时,您无法获得托管对象上下文的挂起更改结果。 – Aderstedt

相关问题