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

标签 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”时,谓词返回相同的数组。不仅仅是第一个对象。任何只查找第一个对象而没有嵌套谓词的方法。

最佳答案

我不确定您在谓词中使用“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)

关于ios - 如何从 nsarray 的 nsarray 中搜索特定联系人,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36373615/

相关文章:

ios - 错误无法获取 APNS token 错误域=com.firebase.iid 代码=1001 "(null)"

objective-c - 查找 nsindexset 中的第 n 个条目

ios - Parse.com 使用 Swift 获取 ObjectID

ios - 对变量名或枚举大小写使用 unicode 箭头字符

ios - Assets 目录编译器错误 Xcode 9

ios - 如果我已经有了对象 ID,请删除一个 PFObject

ios - 在 IBOutlet 类型的变量中循环

ios - 如果没有收到数据则抛出异常

ios - LLVM 5.1 "Deprecated isa"的编译器错误

ios - 多个子项目构建为一个 pod 下的模块