Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在领域中存储简单数组而不在Swift中创建托管列表_Swift_Realm - Fatal编程技术网

在领域中存储简单数组而不在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"]
}
这样,我就可以像平常一样使用数组,并且仍然以简单的方式保持它(不必创建实际的
列表
,也不必管理一堆新的模型/对象)