更新后 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 文档中的所有示例,您会看到所有字段都声明为 @objc
和 dynamic
。如果你因此改变你的定义如下问题应该解决:-
class Subscription : Object {
@objc dynamic var expiryDate = Date()
@objc dynamic var productId = Product.SubscriptionID
}
我刚刚将一个项目更新到 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 文档中的所有示例,您会看到所有字段都声明为 @objc
和 dynamic
。如果你因此改变你的定义如下问题应该解决:-
class Subscription : Object {
@objc dynamic var expiryDate = Date()
@objc dynamic var productId = Product.SubscriptionID
}