【问题标题】:How to filter NSArray in Swift?如何在 Swift 中过滤 NSArray?
【发布时间】:2014-09-21 02:16:26
【问题描述】:
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?

【问题讨论】:

  • 大声笑这不是一个客观的问题。完全不同的语法。
  • 你没有在听。您的问题不是语言问题。这是一个 Cocoa / Foundation 问题(这就是 NSArray 是什么)。如果您想使用 Cocoa 方法,则需要与语言无关。从那个答案到你的“翻译”是微不足道的。一台机器可以做到。

标签: swift


【解决方案1】:

这是我最终做的:

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];

【讨论】:

  • 所以你做了我建议的第二件事。那么这和我说的有什么不同呢?
  • 其实我写了代码来显示语法有多么不同。
猜你喜欢
  • 2013-01-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-23
  • 1970-01-01
  • 2013-08-26
  • 1970-01-01
相关资源
最近更新 更多