我有一个带5个字段的表的领域数据库。这些字段是“ clientName”,“ occasions”,“ venue”,“ time”和“ date”。在uitableview的显示中,我将能够使用clientName显示所有数据:
allEvent = realm.objects(AllEventClass.self).sorted(byKeyPath: "clientName", ascending: true)
现在,我想设置一个带有函数的UISearchBar来搜索整个数据库,而与字段无关。无论用户从搜索栏输入任何字段中的什么数据,表视图都会在clientName中显示与输入的搜索数据相关的结果。现在,我只能使用clientName字段搜索数据库,结果当然是clientName。例如,如果我只记得“日期”但不记得与该“日期”相关联的clientName,那将是一个问题。我希望能够输入“日期”或任何其他字段中的任何数据,并且仍然获得与之关联的clientName结果。目前,这是我唯一可用的代码。
func searchBarSearchButtonClicked(_ searchBar: UISearchBar) {
allEvent = AllEventClasses?.filter("clientName CONTAINS[cd] %@", searchBar.text!).sorted(byKeyPath: "clientName", ascending: true)
tableView.reloadData()
}
非常感谢您。
答案 0 :(得分:0)
问题可能是几个问题中的一个。我说两个。为了清楚起见,领域数据库将包含对象,并且这些对象将具有属性(字段)。因此,实际上并没有一个带有字段的表(有点通用),因此将对这些对象及其属性执行任何查询。
您可能会问如何同时查询数据库中的所有对象。
领域结果是同类集合类型,因此您不能在同一Results对象中存储Object的不同子类-这意味着您无法跨多个对象执行查询并将结果返回到一个Result对象。一种简单的解决方案是查询每种对象类型。
但是,我认为您的实际问题是询问如何查询对象内的多个属性。因此,假设您的对象看起来像这样
NSLayoutManager
,并假设您要查询clientName,场合和日期属性中的所有匹配项。
class AllEventClass: Object {
@objc dynamic var clientName = ""
@objc dynamic var occassions = ""
@objc dynamic var venue = ""
@objc dynamic var time = ""
@objc dynamic var date = ""
}
如果您有其他问题,请告诉我,我会更新答案。