请考虑以下事项:
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
,但这并没有太大的收获,因为我仍然需要将字典数组转换为我需要的数组。
我已经实现了上面的解决方案,所以真正寻找更好的方法。如果正确的答案是“没有更好的方法”那就没关系,只要确保我没有错过任何东西。谢谢!
编辑:在考虑这个问题时,我质疑我需要一个值数组而不仅仅是使用托管对象数组。在任何情况下,如果那里有一个答案,我仍然会很感激。答案 0 :(得分:13)
询问NSDictionaryResultType
,然后使用生成的词典数组,只需要[array valueForKey:@"name"]
。当NSArray
收到-valueForKey:
后,它会返回根据所有元素调用NSArray
的结果创建的新-valueForKey:
。