ios - 如何查询整个 Realm 数据库中的特定数据,而不仅仅是特定字段或属性

标签 ios swift realm

我有一个 Realm 数据库,其中有一个包含 5 个字段的表。这些字段是“clientName”、“occasions”、“venue”、“time”和“date”。在 uitableview 的显示中,我将能够使用以下命令根据 clientName 显示所有数据:

 allEvent = realm.objects(AllEventClass.self).sorted(byKeyPath: "clientName", ascending: true)

现在我想设置一个 UISearchBar,其功能是搜索整个数据库,而不考虑字段。无论用户在搜索栏中输入任何字段的什么数据,tableview 都会在 clientName 中显示与输入的搜索数据相关的结果。现在我只能使用 clientName 字段搜索数据库,结果当然是 clientName。例如,如果我只记得“日期”,但不记得与该“日期”关联的 clientName,这将是一个问题。我希望能够输入“日期”或任何其他字段中的任何数据,并且仍然获得与其关联的 clientName 结果。目前这是我唯一可用的代码。

func searchBarSearchButtonClicked(_ searchBar: UISearchBar) {
    allEvent = AllEventClasses?.filter("clientName CONTAINS[cd] %@", searchBar.text!).sorted(byKeyPath: "clientName", ascending: true)


    tableView.reloadData()
}

提前非常感谢您。

最佳答案

问题可能是问几个问题之一。让我讲两个。为了清楚起见, Realm 数据库将包含对象,并且这些对象将具有属性(字段)。因此,实际上并没有一个包含字段的表(因为这有点通用),因此任何查询都将针对这些对象及其属性执行。

您可能会问如何同时查询数据库中的所有对象。

Realm Result 是一种同质集合类型,因此您无法将不同的 Object 子类存储在同一个 Results 对象中 - 这意味着您无法跨多个对象执行查询并将结果返回到一个 Result 对象中。一个简单的解决方案是查询每种对象类型。

但是,我认为您的实际问题是询问如何跨对象内的多个属性进行查询。所以假设你的对象看起来像这样

class AllEventClass: Object {
    @objc dynamic var clientName = ""
    @objc dynamic var occassions = ""
    @objc dynamic var venue = ""
    @objc dynamic var time = ""
    @objc dynamic var date = ""
}

假设您想要查询 clientName、occassions 和 date 属性中的任何匹配项。

let search = stringFromSearchBar
let eventResults = realm.objects(AllEventClass.self).filter("clientName contains[cd] %@ or date contains[cd] %@ or occassions contains[cd] %@", search, search, search)

如果您问了其他问题,请告诉我,我会更新答案。

关于ios - 如何查询整个 Realm 数据库中的特定数据,而不仅仅是特定字段或属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54156871/

相关文章:

ios - 将多个数据附加到 URLRequest 的 httpbody

ios - iTunes12.7无法安装ipa

ios - 水平ScrollView停在中间

ios - 如何在 Apple Watch 模拟器上强制调用获取占位符模板以更新复杂功能预览

android - 有关 Android 与 RxAndroid、Dagger 2 和 Realm 的问题

ios - 如何在 ios,swift 中初始化我的 ViewController 扩展中的 ui 元素

iphone - 自定义分组表单元格

ios - 使用 EasyMapping (Swift) 解析 Json 数组

arrays - 无法在 Swift 代码中保存、访问和修改 Realm 数据库中的 'List'

ios - 将对象从 Realm 数据库传输到另一个 UITabBar Controller