我有一系列数据不需要是托管列表,这意味着我不需要Realm为具有链接的项目创建新模型,并且能够查询项目,我只想要一个简单的数组,通常是那些不会从Object继承的原语,它将与我的主对象一起保存。
我能想到的唯一解决方案是使用NSData和NSKeyedArchiver / NSKeyedUnarchiver。这是最好/唯一的方法吗?我是否应该使用List,即使我不认为我需要它 - 这种情况的最佳做法是什么?
答案 0 :(得分:0)
Realm不支持基元数组(尽管该功能即将推出),因此最直接的解决方案是使用填充了仅包装基元的模型对象的List
。如果您认为更适合您的特定用例,那么在NSData
之间存档以及将数据存储在您的Realm模型中并没有错。
答案 1 :(得分:0)
这是我决定如何处理这个问题:
var instructions: [String] {
get {
if _instructions == nil {
_instructions = NSKeyedUnarchiver.unarchiveObject(with: instructionsData) as? [String]
}
return _instructions!
}
set {
instructionsData = NSKeyedArchiver.archivedData(withRootObject: newValue)
_instructions = newValue
}
}
fileprivate var _instructions: [String]? = nil
dynamic var instructionsData = Data()
override static func ignoredProperties() -> [String] {
return ["instructions", "_instructions"]
}
这样我可以像往常一样使用数组,并且仍然以一种简单的方式保持它(不必创建实际的List
并且必须管理一堆新模型/对象)。