【问题标题】:Swift Realm filter all object with a null valueSwift Realm 过滤所有具有空值的对象
【发布时间】:2020-03-02 09:45:04
【问题描述】:

我有两个对象如下:

class NextAction: Object {
    @objc dynamic var title: String = ""
    @objc dynamic var notes: String? = ""
    @objc dynamic var deadline: Date?
    @objc dynamic var deadlineID: String = ""
    @objc dynamic var reminder: Date?
    @objc dynamic var reminderID: String = ""
    @objc dynamic var finished: Bool = false
    @objc dynamic var favorite: Bool = false
    @objc dynamic var priority: Int = 0
    var duration = RealmOptional<Int>()
    @objc dynamic var tag: String?
    let tags = List<Tag>()
}

class Tag: Object {
    @objc dynamic var title: String = ""
    let owners = LinkingObjects(fromType: NextAction.self, property: "tags")
}

并非所有 NextAction 对象都有标签,但我想过滤掉并显示所有缺少的对象,我已经尝试过

var test = realm.objects(NextAction.self).filter("ANY tags == nil")

但我得到了这个错误

'Invalid value', reason: 'Expected object of type Tag for property 'tags' on object of type 'NextAction', but received: (null)'

【问题讨论】:

  • tagtags 是两个不同的属性。您的问题指出 并非所有 NextAction 对象都有标签,但这似乎与您尝试执行的查询无关,因为您在查询中使用了tags。此外,List 属性不能为 nil - 它是一个像数组一样工作的列表,标签计数可以为 0,但不能为 nil。你能澄清一下这个问题吗?

标签: swift realm


【解决方案1】:

您的tags 不能是nil。 如果要查找tags 为空的对象,可以这样做。

var test = realm.objects(NextAction.self).filter("ANY tags.@count == 0")

【讨论】:

    猜你喜欢
    • 2016-05-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-16
    • 2016-02-14
    相关资源
    最近更新 更多