2017-03-16 65 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

相關問題