objective-c - 在 Swift 中查找而不是过滤数组

标签 objective-c arrays search swift

我有一个 PFObject 数组。我想搜索“类型”是否包含“寿司”。过滤器改变数组。如何在不更改数组的情况下执行此搜索?

func startCheckOptions(objects: [AnyObject]) {     
  let filteredArray = objects.filter() {
      if let type = ($0 as PFObject)["Type"] as String {
          //if "type" contains "sushi", then do something instead of alter array
          return type.rangeOfString("Sushi") != nil
      } else {
          return false
      }
  }
}

最佳答案

您可以使用包含函数:

func startCheckOptions(objects: [AnyObject]) -> Bool {     
    return contains(objects as [PFObject]) { (object) -> Bool in
        if let type = object["Type"] as? String {
            return type.rangeOfString("Sushi") != nil
        }
        else {
            return false
        }
    }
}

if startCheckOptions(objects) {
    println("yes")
}
else {
    println("no")
}

这样做的好处是不会构建包含匹配对象的新数组并在第一次匹配时停止。

在这种情况下,您最好尽快将对象转换为 [PFObject] 来保护对象转换(或真正在其他地方处理一次)。让 AnyObject 引用四处 float 只会导致困惑和心痛。

关于objective-c - 在 Swift 中查找而不是过滤数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27789224/

相关文章:

ios - NSArray 的副本不符合我的预期

javascript - 如何使每个循环在第一个 true 条件下停止

linux - 如何搜索目录?

java - java中基于标 checkout 现次数的加权搜索算法

iphone - 如何从 GCDAsyncUdpSocket 初始化和实例化

ios - 用于完成 block 的Objective-C计时器

ios - 如何从 Xib 加载的 ViewController 设置 NavigationController navigationItem 标题

c - 按顺序插入字符串数组

objective-c - 如何覆盖 NSWindow?

search - IMAP "search header"命令在搜索文本包含感叹号 (!)、与号 (&) 等时失败