2015-09-16 46 views
0

我有一個類。讓我們打電話給那個類MyObjectMyObject有一個名爲item的屬性,它是NSMetadataItem如何使用NSPredicate篩選包含NSMetadataitems的對象數組

NSMetadataItem■找稱爲NSMetadataItemFSNameKey的屬性可以通過使用此來獲取:

NSString *fileName = [myMetadataItem valueForAttribute: NSMetadataItemFSNameKey]; 

現在我有一個數組或MyObjects,我想查找對象有一個項目其中NSMetadataItemFSNameKey是一個我尋找。

OK,我可以重複使用此代碼數組通:

for (MyObject *oneObj in array) { 
    NSString *oneFileName = [oneObj.item valueForAttribute:NSMetadataItemFSNameKey]; 
    if ([oneFileName isEqualToString:fileNameItem]) { 
     // found, do something 
    } 
    } 

但我試圖尋找是否有可能做到這一點使用NSPredicates和過濾?

這可能嗎?

+0

您可以使用'NSPredicate'的'predicateWithBlock:'方法。 – Larme

回答

2
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"item.%K = %@", NSMetadataItemFSNameKey, fileNameItem]; 
NSArray *filteresArray = [array filteredArrayUsingPredicate:predicate]; 

輸入Safari。

+0

輝煌。我從來沒有意識到可以使用點符號並使用謂詞來搜索屬性。我認爲只有屬性可以像這樣搜索。謝謝! – SpaceDog

+0

屬性是屬性。一段代碼很難檢測到,一個屬性是否是一個聲明的屬性。運行時類的用戶沒有明顯的區別。 –

相關問題