我已按字母顺序存储联系人,因此我在屏幕上显示了联系人列表数组。现在我想通过名称搜索联系人,但谓词在这里不能正常工作。我已经完成了下面的代码。
filterArray.filterUsingPredicate(NSPredicate(format: "ANY SELF.name CONTAINS[cd] '\(tfSearchBar.text!)'", argumentArray: nil))
在过滤器阵列中我首先接触所有联系人,但是当我搜索" a"它给出了所有包含" a"在联系人姓名中。但在这里我卡住了。该部分的所有联系人都没有必要包含" a"在联系人姓名中。
例如
(
A:(
{
name = "abc"
number = "123456"
}
{
name = "azx"
number = "123456"
}
)
)
例如,在搜索" a"之后的上述示例。当我搜索" ab"然后相同的数组由谓词返回。不仅仅是第一个对象。任何方法只能找到没有嵌套谓词的第一个对象。
答案 0 :(得分:0)
我不确定你用“#34; ANY"在你的谓词中,但似乎多余。此代码的工作原理与您在Playground中的描述相同:
import UIKit
@objc class DataElement : NSObject {
let name : String
let number : String
init(name : String, number : String) {
self.name = name
self.number = number
}
}
let dataArray : NSArray = [
DataElement(name: "abc", number: "123456"),
DataElement(name: "azx", number: "689101")
]
let searchTerm = "a"
let predicate = NSPredicate(format: "SELF.name CONTAINS[cd] '\(searchTerm)'", argumentArray: nil)
dataArray.filteredArrayUsingPredicate(predicate)