我知道RLMObjects不能存储NSDecimalNumber。为了避免这种情况,我尝试了以下方法,但失败了:
private dynamic var _amount: String = ""
public var amount: NSDecimalNumber {
get { return NSDecimalNumber(string: _amount) }
set { _amount = newValue.stringValue }
}我遇到了一个错误,说明RLMObjects不能存储NSDecimalNumbers。我的印象是,非动态属性不会存储在领域中。
发布于 2015-04-21 03:16:13
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"]
}
}https://stackoverflow.com/questions/29761309
复制相似问题