RLMObject 属性 NSDecimalNumber
RLMObject property NSDecimalNumber
我知道 RLMObjects 不能存储 NSDecimalNumber。为了解决这个问题,我尝试了以下方法,但失败了:
private dynamic var _amount: String = ""
public var amount: NSDecimalNumber {
get { return NSDecimalNumber(string: _amount) }
set { _amount = newValue.stringValue }
}
我收到一条失败消息,指出 RLMObjects 无法存储 NSDecimalNumbers。我的印象是非动态属性不会存储在 Realm
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
,所以在Realm中是无法持久化的,如果amount
属性会被持久化,则出现异常)
为了防止它,您可以将 ignoredProperties()
方法和 return "amount"
重写为字符串数组。
override public class func ignoredProperties() -> [AnyObject]! {
return ["amount"]
}
基于以上,完整的class定义如下:
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"]
}
}
我知道 RLMObjects 不能存储 NSDecimalNumber。为了解决这个问题,我尝试了以下方法,但失败了:
private dynamic var _amount: String = ""
public var amount: NSDecimalNumber {
get { return NSDecimalNumber(string: _amount) }
set { _amount = newValue.stringValue }
}
我收到一条失败消息,指出 RLMObjects 无法存储 NSDecimalNumbers。我的印象是非动态属性不会存储在 Realm
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
,所以在Realm中是无法持久化的,如果amount
属性会被持久化,则出现异常)
为了防止它,您可以将 ignoredProperties()
方法和 return "amount"
重写为字符串数组。
override public class func ignoredProperties() -> [AnyObject]! {
return ["amount"]
}
基于以上,完整的class定义如下:
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"]
}
}