2014-09-21 50 views
1
self.filteredUserData = self.userData.filter({(listing: NSDictionary) -> Bool in 
     let stringMatch = listing["name"].rangeOfString(searchText) 
     return stringMatch != nil 
}) 

我正要做類似上面的事情,但我意識到'NSArray' does not have a member named 'filter'而不是Swift數組。我如何過濾Swift中的NSArrays?如何過濾Swift中的NSArray?

+0

可能重複[如何篩選通過使用謂詞對象數組?](HTTP://計算器.com/questions/18714634/how-to-filter-array-with-objects-by-using-predicate) – matt 2014-09-21 02:49:16

+1

lol這不是一個客觀的c問題。完全不同的語法。 – User 2014-09-21 02:51:06

+1

你沒在聽。你的問題不是一個_language_問題。這是一個可可/基金會的問題(這就是NSArray的)。如果你想使用Cocoa方法,你需要成爲語言不可知的。從那個答案到你的「翻譯」是微不足道的;一臺機器可以做到這一點。 – matt 2014-09-21 03:17:47

回答

4

這裏是我落得這樣做:

let resultPredicate = NSPredicate(format: "name contains[c] %@", searchText) 
self.filteredUserData = self.userData.filteredArrayUsingPredicate(resultPredicate) 

Objective-C的版本:

NSPredicate *resultPredicate = [NSPredicate predicateWithFormat:@"name contains[c] %@", searchText]; 
self.filteredUserData = [self.userData filteredArrayUsingPredicate:resultPredicate]; 
+2

所以你做了我建議的第二件事。那麼這和我說的有什麼不同呢? – matt 2014-09-21 02:50:01

+0

嗯,我實際上寫了代碼來顯示語法有多不同。 – User 2014-09-21 02:51:40