【问题标题】:Changing filter on Realm notification更改领域通知的过滤器
【发布时间】:2017-01-31 06:59:29
【问题描述】:

我想知道是否可以在结果集上使用相同的通知块但更改过滤器?例如:我有两个查询,一个是 isDelivered = true,一个是 isDelivered = false。我想要一个具有不同过滤器的结果集,然后根据我是否想查看已交付或未交付的项目来切换结果集。这是可能的还是我需要为此创建两个通知块?

【问题讨论】:

  • 这方面有什么更新吗?刚刚遇到了同样的问题。

标签: ios swift swift3 realm


【解决方案1】:

无法追溯更改用于创建领域Results 对象的谓词查询。但是可以将相同的通知块附加到两个单独的Results 实例以共享处理逻辑。

let notificationBlock: ((RealmCollectionChange) -> Void) = { changes in 
   // Perform common update logic in here
}

let deliveredObjects = realm.objects(MyObject.self).filter("isDelivered = true")
let delieveredNotificationToken = deliveredObjects.addNotificationBlock(notificationBlock)

let undeliveredObjects = realm.objects(MyObject.self).filter("isDelivered = false")
let undelieveredNotificationToken = undeliveredObjects.addNotificationBlock(notificationBlock)

【讨论】:

  • 它抱怨这个:Cannot convert value of type '(_) -> ()' to specified type '(RealmCollectionChange) -> Void'
  • 嗯,显然它还需要定义所有泛型类型:let notificationBlock: (RealmCollectionChange<Results<MyObject>>) -> Void = { changes in
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-04
相关资源
最近更新 更多