在领域中存储简单数组而不在Swift中创建托管列表
我有一个不需要是托管列表的数据数组,这意味着我不需要为带有链接的项创建新模型,也不需要对项进行查询等。我只需要一个简单的数组,通常是不从对象继承的原语数组,它将与我的主对象一起持久化在领域中存储简单数组而不在Swift中创建托管列表,swift,realm,Swift,Realm,我有一个不需要是托管列表的数据数组,这意味着我不需要为带有链接的项创建新模型,也不需要对项进行查询等。我只需要一个简单的数组,通常是不从对象继承的原语数组,它将与我的主对象一起持久化 我能想到的唯一解决方案是使用NSData和NSKeyedArchiver/NSKeyedUnarchiver。这是做这件事的最好/唯一方法吗?即使我认为自己不需要列表,我也应该使用它吗?这种情况下的最佳实践是什么?Realm不支持原语数组(尽管该功能即将推出),因此最简单的解决方案是使用一个填充了仅包装原语的模型对
我能想到的唯一解决方案是使用NSData和NSKeyedArchiver/NSKeyedUnarchiver。这是做这件事的最好/唯一方法吗?即使我认为自己不需要列表,我也应该使用它吗?这种情况下的最佳实践是什么?Realm不支持原语数组(尽管该功能即将推出),因此最简单的解决方案是使用一个填充了仅包装原语的模型对象的
列表。不过,如果您觉得更适合您的特定用例,那么在NSData
之间存档并将数据存储在您的领域模型中并没有什么错。以下是我决定如何处理这一问题的:
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"]
}
这样,我就可以像平常一样使用数组,并且仍然以简单的方式保持它(不必创建实际的列表
,也不必管理一堆新的模型/对象)