【问题标题】:How to create an empty Results<T> object?如何创建一个空的 Results<T> 对象?
【发布时间】:2017-07-08 15:10:42
【问题描述】:

我正在尝试创建一个MutableProperty,其中包含从Realm.objects(_:) 收到的Results。 要创建属性,我需要给它一个初始值;因此“空”Results

我尝试使用以下方法创建一个:

var someThings = Results<SomeObject>()
MutableProperty(someThings)

但是编译器给了我错误:Cannot invoke initializer for type 'Results&lt;SomeObject&gt;' with no arguments

虽然我理解该错误,但我不确定如何在此上下文中创建 Results 对象。 查看Results 的来源,我也找不到init


所以我的问题是;如何自己创建一个Results 以在MutableProperty 中使用?

编辑:

我见过this question...但这并没有真正的帮助(除非我要为 MutableProperty 或其他东西创建一个“包装器”)。

【问题讨论】:

  • 你可以创建一个永远为假的条件
  • 我不明白你的意思,你能详细说明一下吗?
  • 我的意思是,获得Results 的唯一方法是从realm 获得一个,请参阅here,如果你想获得一个空的,我想你会使用不可能的条件,例如 NSPredicate(format: "color IS NULL AND color IS NOT NULL"); 或类似的东西。
  • 所以基本上你说的是“空”结果集只能通过从领域获取对象然后使用返回 0 个对象的过滤器过滤获取的对象来创建?这看起来……丑陋,但我会试试看。
  • 因为 Realm 结果被延迟访问,例如 ResultsFALSEPREDICATE 永远不会从磁盘加载任何数据。例如realm.objects(SomeObject.self).filter("FALSEPREDICATE")

标签: ios swift realm


【解决方案1】:

在我的 OP 上的 cmets 的帮助下;通过使用“无效”过滤器获取对象,我创建了一个具有空结果集的可变属性。

例如MutableProperty(realm.objects(SomeObject.self).filer("EMPTY SET")).

【讨论】:

  • 这样更安全、更通用:realm.objects(ofType).filter(NSPredicate(value: false))
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-01-23
  • 1970-01-01
  • 2011-02-07
  • 2018-02-21
  • 2019-09-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多