2014-09-21 26 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