从核心数据实体获取属性值数组的有效方法是什么?

时间:2011-11-18 20:16:30

标签: ios core-data nsmanagedobject nsfetchrequest

请考虑以下事项:

NSFetchRequest *request = [[NSFetchRequest Alloc] init];
request.entity = [NSEntityDescription entityWithName:@"Person" inContext:_MOC];
request.propertiesToFetch = [NSArray arrayWithObject:@"Name"];
NSError *error = nil;
NSArray *results = [_MOC executeFetchRequest:request error:&error];

返回Person个对象的数组。我想要的是来自这些对象的Person.name值数组。目前我走结果数组,提取名称并构建一个新数组。有更清洁,更快的方法吗?我已经考虑过将request.resultType更改为NSDictionaryResultType,但这并没有太大的收获,因为我仍然需要将字典数组转换为我需要的数组。

我已经实现了上面的解决方案,所以真正寻找更好的方法。如果正确的答案是“没有更好的方法”那就没关系,只要确保我没有错过任何东西。谢谢!

编辑:在考虑这个问题时,我质疑我需要一个值数组而不仅仅是使用托管对象数组。在任何情况下,如果那里有一个答案,我仍然会很感激。

1 个答案:

答案 0 :(得分:13)

询问NSDictionaryResultType,然后使用生成的词典数组,只需要[array valueForKey:@"name"]。当NSArray收到-valueForKey:后,它会返回根据所有元素调用NSArray的结果创建的新-valueForKey: