使用 swift 将数组保存和检索到用户默认值
Posted
技术标签:
【中文标题】使用 swift 将数组保存和检索到用户默认值【英文标题】:save and retrieve array to user default using swift 【发布时间】:2018-12-18 03:50:07 【问题描述】:我想将数组从 json 保存到用户默认值,我会在打印时得到数组。当我在不同的视图控制器中检索它时,我只得到最后一个数组。 那么如何在不同的视图控制器中检索所有数据用户默认值。
这就是我将代码保存在用户默认值中的方式
第一个视图控制器
let kode_pelaksanaan = item["kode_pelaksanaan"].string
UserDefaults.standard.set(kode_pelaksanaan, forKey: "kode_pelaksanaan")
输出:
kode_pelaksanaan : ELR2018120005
kode_pelaksanaan : ELR2018120004
kode_pelaksanaan : ELR2018120003
kode_pelaksanaan : ELR2018120001
kode_pelaksanaan : ELR2018050004
在第二个视图控制器中检索它
let data = UserDefaults.standard.object(forKey: "kode_pelaksanaan")
let parameter = [
"request" : "\"requestMethod\":\"detail_selflearning\",\"user\":\"\(user)\",\"kode_pelaksanaan\":\"\(data ?? "0")\""
]
输出检索
kode_pelaksanaan : ELR2018050004
我想输出第二个视图控制器
kode_pelaksanaan : ELR2018120005
kode_pelaksanaan : ELR2018120004
kode_pelaksanaan : ELR2018120003
kode_pelaksanaan : ELR2018120001
kode_pelaksanaan : ELR2018050004
【问题讨论】:
您需要提供更多信息。item
是如何声明的? .string
的类型是什么?你print
做了什么来获得这些输出?
您在 UserDefaults 中只保存了一个字符串。所以只有你得到一个单一的价值。您必须在 UserDefaults 中保存一组字符串。那么只有你会得到所有的价值。
【参考方案1】:
您的代码 sn-p 没有提供足够的信息。
这是一个如何从 UserDefaults 存储和检索数组的示例
var myArray = [0,1,2]
override func viewDidLoad()
super.viewDidLoad()
UserDefaults.standard.set(myArray, forKey: "yourArray")
let data = UserDefaults.standard.object(forKey: "yourArray")!
print(data)
【讨论】:
【参考方案2】:用户默认值+包装器
final class UDWrapper
class func setArray(key: String, value: NSArray)
setObject(key: key, value: value)
class func getArray(key: String) -> [Any]?
return UserDefaults.standard.array(forKey: key)
class func setObject(key: String, value: Any?)
if value == nil
UserDefaults.standard.removeObject(forKey: key)
else
UserDefaults.standard.set(value, forKey: key)
用法
let array: NSArray = ["Hello, World!", 42]
UDWrapper.setArray(key: "myarray", value: array)
print(UDWrapper.getArray(key: "myarray") ?? "")
【讨论】:
【参考方案3】:这样使用:
// To save array in UserDefault
let names = ["John", "Alex", "Matien", "Flex"]
UserDefaults.standard.set(names, forKey: "names")
// To get names array from UserDefault safely.
if let allNames = UserDefaults.standard.object(forKey: "names") as? [String]
print(allNames)
【讨论】:
这是一件很容易对答案投反对票的事情。但很难解释这是怎么回事?为什么???以上是关于使用 swift 将数组保存和检索到用户默认值的主要内容,如果未能解决你的问题,请参考以下文章
如何保存响应 JSON 数组并在 swift 中使用用户默认值进行检索