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

时间:2019-01-12 04:54:00

标签: ios swift realm

我有一个带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()
}

非常感谢您。

1 个答案:

答案 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 = ""
}

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