2016-05-12 18 views
6

我正在使用Realm List/Results作爲我的UITableView的數據源。在某個時候,我給它分配一個列表。像:如何將RealmSwift列表轉換爲結果?

var dataSource:List<SomeObject>! // Or >> Results<SomeObject>! 
let aRealmObject = realm.objectForPrimaryKey(SomeObject.self, key: objectId) 
dataSource = aRealmObject.someList // dataSource should be List 

然後,我有這個名單上的過濾器如果用戶改變了過濾器的日期,我這樣做:

dataSource = dataSource.filter("FILTER THE DATES",newDates) // dataSource should be Results 

但上面的行會導致一個錯誤的filter返回類型是一個Results對象,而aRealmObject.someList是一個List。

處理這種情況的最佳方法是什麼?

  • 化妝數據源作爲ListResults對象轉換爲List?怎麼樣??
  • 將dataSource設置爲Results並將List轉換爲Results?怎麼樣??
  • 或者您可能有更好的方式,請與我分享。

感謝,

回答

4

兩個ListResults(以及LinkingObjects)可以被轉換成一個AnyRealmCollection類型。我認爲這可能是標準化所有Realm陣列類型的最佳方式:

var dataSource:AnyRealmCollection! 
let aRealmObject = realm.objectForPrimaryKey(SomeObject.self, key: objectId) 
dataSource = AnyRealmCollection(aRealmObject.someList) 
6

我已經找到了一種簡單的方法List轉換爲Results利用如果過濾器的方法,它總是返回Results對象。剛剛給了它一個真正的謂詞。

dataSource = aRealmObject.someList.filter("TRUEPREDICATE") //this is a Results object.