【问题标题】:How to filter realm contacts by phone number with Predicate?如何使用 Predicate 按电话号码过滤领域联系人?
【发布时间】:2018-07-09 08:19:40
【问题描述】:

我有一个表格视图,显示所有联系人都使用 RealmSwift。 如何使用 Predicate 按电话号码过滤领域联系人?

    class Contact: Object {
        @objc dynamic var firstName = ""
        @objc dynamic var lastName = ""
        var number = List<String>()
        @objc dynamic var avatar:Data?
       var email = List<String>()
    }

    var contacts:Results<Contact>?

    //When click search button
    DispatchQueue.main.async {
        self.contacts = self.phoneContact.readContactFromLocal()
        var contacts_tmp1 = self.contacts
        if self.txt_search.text != nil && self.txt_search.text != ""{
              let predicate = NSPredicate(format: "firstName contains[c] %@ OR lastName contains[c] %@", self.txt_search.text!, self.txt_search.text!)
               contacts_tmp1 = contacts_tmp1?.filter(predicate)
        }
        contacts_tmp1 = contacts_tmp1?.sorted(byKeyPath: "firstName", ascending: true)

        self.contacts = contacts_tmp1
        self.tableView.reloadData()
   }

【问题讨论】:

  • 请提供您目前尝试过的代码。
  • 我在 Predicate 中按 firstName 和 lastName 过滤
  • @LeVanPhuong 请更新问题中的代码,不要评论
  • 我在问题中更新了代码。谢谢
  • 您似乎已经知道如何使用filterNSPredicates 来过滤Realm 查询,那么您的实际问题是什么?您是否只是试图检索其number 属性与给定String 匹配的联系人?

标签: ios swift realm predicate


【解决方案1】:

领域不支持对原语列表进行过滤。您只能过滤领域对象列表。 Issue tracking here. 有一些变通方法可以做,例如手动比较字符串,但在领域中没有办法。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-26
    • 2011-04-12
    • 1970-01-01
    • 1970-01-01
    • 2017-09-05
    • 2023-03-18
    相关资源
    最近更新 更多