gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 10:54:02 25 4
gpt4 key购买 nike

我有一个 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com