我在我的应用程序中使用以下查询来过滤文件夹,其中类别(数组)id等于用户选择的文件(categoryId
)
func getFoldersForCategory(_ categoryId:Int, sorting:String) -> Results<Folder> {
let realm = try! Realm()
let realmObjects = realm.objects(Folder.self).sorted(byKeyPath: "producerName", ascending: true).filter("toDate >= %@ AND language == %@", getCurrentLocalDateWithoutTimeStamp(), ApplicationSettingsRealm().getCurrentLanguage())
return realmObjects.filter({ $0.categories.filter({ $0.id == categoryId }) != [] })
}
上面的代码用于返回[Folder]
数组时的工作(因此getFoldersForCategory(_ categoryId:Int, sorting:String) -> [Folder]
。
我最近想要从Realm查询中更改返回结果。
现在我的代码不再有效,因为我无法使用Results<Folder>
以这种方式过滤。我收到的错误是
无法在当前上下文中推断闭包类型
所以我想知道是否有一种方法可以将最后一行代码从数组转换为Realm Results&lt;&gt;
谢谢!
答案 0 :(得分:3)
categories
是领域List
,您只需在查询中包含该过滤器,而不是将其转换为数组:
func getFoldersForCategory(_ categoryId:Int, sorting:String) -> Results<Folder> {
let realm = try! Realm()
return realm.objects(Folder.self)
.sorted(byKeyPath: "producerName", ascending: true)
.filter("toDate >= %@ AND language == %@ AND ANY categories.id == %@",
getCurrentLocalDateWithoutTimeStamp(),
ApplicationSettingsRealm().getCurrentLanguage(),
categoryID)
}