【发布时间】: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,这是正确的答案。