【问题标题】:'RLMException', reason: 'Table has no columns''RLMException',原因:'表没有列'
【发布时间】:2019-08-17 18:43:00
【问题描述】:

我已经查看了有关此问题的相关文章。 Issue in adding data in Realm in iOS

似乎只发布了上一篇文章,人们没有向变量添加动态。那不是我的情况。我根本找不到任何其他原因导致它失败。

构建目标 12.2,swift 版本:Swift 5,领域版本:swift-10.2.1

我的班级:

class Person: Object {
    dynamic var id = UUID().uuidString
    dynamic var name = "" 
}

这就是我尝试添加到领域的方式

    let realm = try! Realm()
    let person = Person()
    person.name = "John Doe"
    try! realm.write {
        realm.add(person)
    }

任何指针或建议将不胜感激。非常感谢您阅读这篇文章。

【问题讨论】:

    标签: swift realm realm-mobile-platform realm-ios


    【解决方案1】:

    您仍然需要变量中的@objc 属性。另见here

    class Person: Object {
        @objc dynamic var id = UUID().uuidString
        @objc dynamic var name = "" 
    }
    

    编辑:

    为了完整起见,可以将 Realm 对象类标记为 @objcMembers (Swift 4+),这将使所有标记为 dynamic 的类属性都由 Realm 管理。 See Property Attributes 在 Swift 指南中。

    【讨论】:

    • 谢谢@josh,不知道我是怎么错过的。这就是问题所在。
    • @Alix 如果提供了解决方案,请务必accept 这个答案,以便它可以帮助其他人。
    • 我还想补充一点请注意,如果类被声明为@objcMembers(Swift 4 或更高版本),则可以将单个属性声明为动态变量。当我看到一个在变量前面只有 dymamic 的类时,我多次忽略了这一点。请记住,使用 @objcMembers 将使所有成员具有由 Realm 管理的动态关键字,这可能不适合所有用例。
    猜你喜欢
    • 1970-01-01
    • 2010-09-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多