2013-01-14 25 views
1

我確定已經詢問了這個問題,但我不知道要搜索什麼。NSPredicate過濾器數組,但只返回一個對象的字段

我有消息對象的數組,其中包含以下字段{selected[BOOL], messageText[STR]}。我想過濾這個數組以獲得只有selected=TRUE的對象。到現在爲止還挺好。

NSArray *messagesFiltered = [self.fetchedResultsController.fetchedObjects filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"selected == TRUE"]]; 

不過,我並不需要返回數組本身的對象,我需要的messageText字符串數組。如何修改predicate僅返回messageText字符串而不是整個對象?

回答

11

這不是一個謂詞的工作。謂詞僅適用於篩選,而不是修改,您應用它們的數組。

但是,有一個有趣的小技巧:方法-valueForKey:將應用您想要的數組的變換類型。只是你想要的messageText鍵調用它:

NSArray *messagesFiltered = [self.fetchedResultsController.fetchedObjects filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"selected == TRUE"]]; 
NSArray *realMessages = [messagesFiltered valueForKey:@"messageText"]; 

在陣列,-valueForKey:要求每個元素對於給定鍵的值,然後返回所有的元素返回數組。 (對於您傳遞的密鑰,返回nil的任何元素在結果數組中顯示爲[NSNull null]。)

相關問題