更新后 RealmSwift 崩溃并出现错误 "Invalid property name"

RealmSwift crashes with error "Invalid property name" after update

我刚刚将一个项目更新到 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 有什么变化会导致这些错误吗?

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

class Subscription : Object {

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