gpt4 book ai didi

ios - RLMObject 属性 NSDecimalNumber

转载 作者:搜寻专家 更新时间:2023-10-31 08:34:02 27 4
gpt4 key购买 nike

我知道 RLMObjects 不能存储 NSDecimalNumber。为了解决这个问题,我尝试了以下方法,但失败了:

    private dynamic var _amount:    String = ""
public var amount: NSDecimalNumber {
get { return NSDecimalNumber(string: _amount) }
set { _amount = newValue.stringValue }
}

我收到一条失败消息,指出 RLMObjects 无法存储 NSDecimalNumbers。我的印象是非动态属性不会存储在 Realm 中

最佳答案

RLMObjects 的任何属性都必须是动态的。所以 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() 方法并返回 "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"]
}
}

关于ios - RLMObject 属性 NSDecimalNumber,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29761309/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com