RLMObjects
的任何属性必须是dynamic
。所以amount: NSDecimalNumber
属性应被定义为dynamic
象下面这样:
private dynamic var _amount: String = ""
public dynamic var amount: NSDecimalNumber {
get { return NSDecimalNumber(string: _amount) }
set { _amount = newValue.stringValue }
}
和计算机性能不应该被坚持。 (当然,amount
属性为NSDecimalNumber
,所以它不能被境界坚持。如果amount
属性将被保留,出现异常)
为了防止这种情况,你可以重写ignoredProperties()
方法并返回"amount"
为字符串数组。
override public class func ignoredProperties() -> [AnyObject]! {
return ["amount"]
}
基于以上,完整的类定义如下:
public class Product: RLMObject {
private dynamic var _amount: String = ""
public dynamic var amount: NSDecimalNumber {
get { return NSDecimalNumber(string: _amount) }
set { _amount = newValue.stringValue }
}
public override class func ignoredProperties() -> [String]! {
return ["amount"]
}
}