【问题标题】:RealmSwift crashes with error "Invalid property name" after update更新后 RealmSwift 崩溃并出现错误“无效的属性名称”
【发布时间】:2019-06-01 16:15:51
【问题描述】:

我刚刚将一个项目更新到 Swift 5.0,并将 Realm 和 RealmSwift 从 2.8.3 更新到 3.14.2。

该项目之前运行良好,但现在它在以下简单示例中崩溃:

定义:

class Subscription : Object {

    dynamic var expiryDate = Date()
    dynamic var productId = Product.SubscriptionID
}

实施:

let query = NSPredicate(format:"productId == %@", productId)
let subs = Array(realm.objects(Subscription.self).filter(query))

有错误

Terminating app due to uncaught exception 'Invalid property name', reason: 'Property 'productId' not found in object of type 'Subscription''

RealmSwift 有什么改变会导致这些错误吗?

【问题讨论】:

  • dynamic var productId = Product.SubscriptionID - 这是什么? Product 是如何定义的?
  • struct Product { static let SubscriptionID = "com.company.appName" }
  • 对象字段应该有 @objc 声明 - 添加这些声明并重试。
  • 谢谢@ChrisShaw,这是正确的答案。

标签: ios swift realm ios12


【解决方案1】:

如果您遵循 Realm 文档中的所有示例,您会看到所有字段都被声明为 @objcdynamic。如果您因此更改您的定义如下问题应该解决:-

class Subscription : Object {

  @objc dynamic var expiryDate = Date()
  @objc dynamic var productId = Product.SubscriptionID
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多