考虑以下几点:
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,但是不要太多购买,因为我仍然需要将字典数组转换为我需要的数组.
我已经有上面的解决方案,所以真的寻找一个更好的方法.如果正确的答案是“没有更好的方法”没关系,只要确定我没有丢失任何东西.谢谢!
编辑:在考虑这一点时,我质疑我需要一系列的值,而不是使用被管理对象的数组.在任何情况下,如果有一个在那里,仍然会感谢一个伟大的答案.
解决方法
请求NSDictionaryResultType,然后使用结果的字典数组,只需要求[array valueForKey:@“name”].当NSArray接收到-valueForKey时:它返回一个新的NSArray,它从调用-valueForKey的结果创建:在其所有元素上.