2017-03-16 79 views
0

我使用以下查询我的应用程序进行过滤的文件夹,其中的类别(数组)ID等于所述一个用户选择(categoryId是否可以将数组转换为Realm中的Result <>?

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]。 我最近想改变从境界查询返回的结果。

现在我的代码是不工作了,因为我不能这样用Results<Folder>进行筛选。我收到的错误是

无法推断闭合类型在当前上下文中

所以我想知道是否存在,我可以的代码的最后一行转换从阵列到领域的方式结果<>

由于!

回答

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) 
} 
+0

谢谢,我不知道为什么我没有看到这越快!有时候不同的外观有所帮助 – SoundShock

相关问题