如何将RealmSwift List转换为结果?

时间:2016-05-12 10:25:48

标签: ios swift realm realm-cocoa

我正在使用领域List/Results作为UITableView的数据源。在某些时候,我为它分配一个列表。像:

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是列表。

处理这种情况的最佳方法是什么?

  • 将dataSource设为List并将Results对象转换为List?如何??
  • 将dataSource设为Results并将List转换为Results?如何??
  • 或者你可能有更好的方法,请与我分享。

谢谢,

2 个答案:

答案 0 :(得分:12)

我找到了一种将List转换为Results的简单方法,如果使用过滤器方法,它总是会返回Results个对象。只是给了它一个真正的谓词。

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

答案 1 :(得分:7)

ListResults(以及LinkingObjects)都可以转换为AnyRealmCollection类型。我认为这可能是标准化所有Realm的数组类型类型的最佳方法:

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