0

这是我的循环:

- (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 助手类重写它?

4

2 回答 2

2

NSPredicate更多的是关于过滤数据,就像你说的。一个干净的方法是使用键值编码,当使用它时,它会NSArray调用valueForKey:它的每个对象的方法,并将结果作为一个返回NSArray

_myArray = [self.helper.myReportType.reports valueForKey:@"nameString"];

请注意,此方法会自动转换nilNSNull。更高级的 KVC-Collection 运营商信息可以在这里找到:http: //nshipster.com/kvc-collection-operators/

于 2013-01-04T05:29:35.233 回答
1

使用下面的代码 -

[self.helper.myReportType.reports valueForKey:@"nameString"];

它将从报告数组中返回您的 nameString 数组。

于 2013-01-04T05:29:28.200 回答