我有一个 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/