这是我的循环:
- (NSArray *)myArray
{
if (!_myArray)
{
NSMutableArray *array = [NSMutableArray array];
for (MyReport *report in self.helper.myReportType.reports)
{
[array addObject:report.nameString];
}
_myArray = array;
}
return _myArray;
}
这是有效的(显然有些投射可能不太好或不可取),但肯定有更好的方法来做到这一点。 NSPredicate
可以帮忙吗? (我仍然不习惯使用NSPredicate
,但我认为它主要用于过滤数据,而不是构建这样的数组?)否则,我如何使用另一个Apple助手类重写它?
答案 0 :(得分:2)
NSPredicate
更多的是关于过滤数据,就像你说的那样。干净的方法是使用键值编码,在NSArray
上使用时,会在每个对象上调用valueForKey:
方法,并将结果作为NSArray
返回:< / p>
_myArray = [self.helper.myReportType.reports valueForKey:@"nameString"];
请注意,此方法会自动将nil
转换为NSNull
。可以在此处找到更高级的KVC-Collection操作员信息:http://nshipster.com/kvc-collection-operators/
答案 1 :(得分:1)
使用以下代码 -
[self.helper.myReportType.reports valueForKey:@"nameString"];
它将从reports数组中返回nameString的数组。