Arrays 如何保存整个整数数组?

Arrays 如何保存整个整数数组?,arrays,swift,swift-playground,Arrays,Swift,Swift Playground,我需要将所有数据保存在一个整数数组中。我在Swift游乐场,我尝试使用UserDefaults将其保存到存储中 let savedSugarArray = [UserDefaults.standard.integer(forKey: "sugarArray")] 此选项用于将数据放置在SavedSugarray中 UserDefaults.standard.setValue(sugarArray, forKey: "sugarArray") 因为我使用的是Swift操场,所以我不想使用核心数

我需要将所有数据保存在一个整数数组中。我在Swift游乐场,我尝试使用UserDefaults将其保存到存储中

let savedSugarArray = [UserDefaults.standard.integer(forKey: "sugarArray")]
此选项用于将数据放置在SavedSugarray中

UserDefaults.standard.setValue(sugarArray, forKey: "sugarArray")

因为我使用的是Swift操场,所以我不想使用核心数据,因为它太长了。还有别的办法吗?提前感谢。

用户默认值在游乐场Xcode 8.2.1中的功能与在项目中的功能不同。通常,您会使用以下选项:

设置:

获取:

但是,要显示UserDefault在游乐场中的功能不同,只需将其复制到您的游乐场中:

let integerArray: [Int] = [1,2,3,4,5]
UserDefaults.standard.set(integerArray, forKey: "sugarArray")
if let integerArray = UserDefaults.standard.object(forKey: "sugarArray") as? [Int]{
    print("UserDefaults work in playground")
}
else{
    print("UserDefaults do not work in playground")
}

我认为扩展在这里会很有帮助

extension UserDefaults {
   open func set(_ intArray: [Int], forKey defaultName: String) {
      let array: NSArray = intArray as NSArray
      set(array, forKey: defaultName)
   }

   func intArray(forKey defaultName: String) -> [Int] {
      var result: [Int] = []

      let found = value(forKey: defaultName) as? NSArray ?? []

      found.forEach {
         guard let item = $0 as? Int else {
            return
         }
         result.append(item)
      }

      return result
   }
}
用法:

UserDefaults.standard.set([1,2,3,4,5], forKey: "sugarArray")
UserDefaults.standard.synchronize()

let sugarArray = UserDefaults.standard.intArray(forKey: "sugarArray")
很少解释

Int数组被转换为NSArray对象,然后保存到UserDefaults

为了得到数组,我们得到一个对象并尝试将其解析为NSArray 然后,我们将找到的数组中的每个项转换为Int


然后返回结果

1。第一行代码中的方括号是什么?2.为什么错误地使用setValueforKey:以UserDefault保存对象?使用setforKey:。3.你真正的问题是什么?我用方括号把它变成Int-array类型。我的问题是如何保存数组,这样我就可以退出应用程序并仍然使用以前的条目中的数据。您已经有了保存数组的代码。那么,除了我第一条评论中的问题之外,你还有什么问题?它不会保存。正如我之前所说的,代码显然在那里,但它没有保存数组。您是否按照上面所说的做了,并使用了setforKey:而不是错误的setValueforKey:?那么我在if语句后面放了什么呢。它没有显示数组中的任何内容?通常使用integerArray对象。在操场上使用UserDefaults有什么好处?在概念上对我来说没有多大意义。这是一场比赛。我必须使用Swift游乐场。我已经成功地使用UserDefaults从TextField保存字符串。如果你问if语句的用途,我建议你阅读一些基本逻辑语句。这应该是一个良好的开端:
extension UserDefaults {
   open func set(_ intArray: [Int], forKey defaultName: String) {
      let array: NSArray = intArray as NSArray
      set(array, forKey: defaultName)
   }

   func intArray(forKey defaultName: String) -> [Int] {
      var result: [Int] = []

      let found = value(forKey: defaultName) as? NSArray ?? []

      found.forEach {
         guard let item = $0 as? Int else {
            return
         }
         result.append(item)
      }

      return result
   }
}
UserDefaults.standard.set([1,2,3,4,5], forKey: "sugarArray")
UserDefaults.standard.synchronize()

let sugarArray = UserDefaults.standard.intArray(forKey: "sugarArray")