ios - 将数组的数组保存为用户默认值

标签 ios swift userdefaults

我可以使用这个将单个数组保存到用户默认值:

var array = [0,0,0]

defaults.set(array, forKey: "SavedArray") //saves array

array = defaults.object(forKey: "SavedArray") as? [Int] ?? [Int]()

但它不会让我保存一个数组数组,我正在尝试这个:

arrayOfArrays = [[0,0,0],[0,0,0],[0,0,0],[0,0,0]]

defaults.set(arrayOfArrays, forKey: "SavedArrayOfArrays") //saves array

arrayOfArrays = [defaults.object(forKey: "SavedArrayOfArrays") as? Array<Int> ?? Array<Int>()] //loads array

它会导致在数组“[[]]”中加载一个空数组,并且不会在数组中保存数组列表。

最佳答案

首先, key 不匹配。您将数组保存为键 SavedArrayOfArrays但为 arrayOfArrays 加载它

其次,嵌套数组的类型是[[Int]]Array<Array<Int>> , 不是 [Int]Array<Int>

最后,UserDefaults有一个专门的方法来加载数组

let arrayOfArrays = defaults.array(forKey: "SavedArrayOfArrays") as? [[Int]]

关于ios - 将数组的数组保存为用户默认值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48131926/

相关文章:

ios - 在 Swift 3 中保存 TableView 的数据

android - 多个电话/设备之间的通信

JavaScript 未在 WKWebView 中执行

ios - 通过在 Swift 中按下按钮触发本地通知权限对话框

swift - 在 Swift 3 中很好地显示 JSON 数据

ios - 为什么我的 User Defaults bool 没有在第一次启动应用程序时设置?

ios - 从扩展程序写入存储在 App Group 容器中的数据库

ios - SpriteKit applyforce不起作用

ios - swiftui形状的自适应框架(窗口小部件)大小

swift - 从 UserDefaults 中读取缺失值