是否可以将数组转换为结果<>在境界?

时间:2017-03-16 15:15:17

标签: arrays swift realm

我在我的应用程序中使用以下查询来过滤文件夹,其中类别(数组)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;

谢谢!

1 个答案:

答案 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)
}