如何从nsarray的nsarray搜索特定联系人

时间:2016-04-02 13:02:28

标签: ios swift nsarray nspredicate

我已按字母顺序存储联系人,因此我在屏幕上显示了联系人列表数组。现在我想通过名称搜索联系人,但谓词在这里不能正常工作。我已经完成了下面的代码。

   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"然后相同的数组由谓词返回。不仅仅是第一个对象。任何方法只能找到没有嵌套谓词的第一个对象。

1 个答案:

答案 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)