2013-01-04 136 views
0

這裏是我的循環:我可以使用NSPredicate嗎?

- (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幫助類來重寫此數據呢?下面的代碼 -

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

回答

2

NSPredicate更多的是關於過濾數據,就像你說的。一個乾淨的方式做,這是與鍵 - 值編碼,這在NSArray使用時,調用它的每個對象的valueForKey:方法,並返回結果作爲NSArray

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

注意,此方法轉換nil自動到NSNull。更高級的KVC-Collection運營商信息可以在這裏找到:http://nshipster.com/kvc-collection-operators/

+0

如果'self.helper.myReportType.reports'是一個空數組(例如'[NSArray array]'),這個調用是否安全? –

+1

回答我自己的問題 - 是的,如果它是一個空數組,它是安全的。在這樣的事件中,這個方法將簡單地返回一個空數組。感謝你及時的答覆。這正是我需要的。 –

1

使用它會從報告中數組的形式返回你nameString的陣列。

相關問題