【问题标题】:how to convert RealmSwift List to Results?如何将 RealmSwift 列表转换为结果?
【发布时间】:2016-05-12 10:25:47
【问题描述】:

我使用领域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?怎么样??
  • 将数据源设为Results 并将List 转换为Results?怎么样??
  • 或者您有更好的方法,请与我分享。

谢谢,

【问题讨论】:

    标签: ios swift realm realm-cocoa


    【解决方案1】:

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

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

    【讨论】:

    • 我担心这会通过迭代每个对象并可能导致故障而产生不必要的开销。
    • 我同意 迭代列表是不必要的工作,但我认为这不会引起注意,除非您的列表中有 50 万条记录。
    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 2015-09-14
      • 1970-01-01
      • 1970-01-01
      • 2018-10-08
      • 2018-02-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-20
      相关资源
      最近更新 更多