首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在Swift 4中使用UserDefaults保存元组数组?

如何在Swift 4中使用UserDefaults保存元组数组?
EN

Stack Overflow用户
提问于 2018-09-07 04:42:23
回答 2查看 0关注 0票数 0

我想在UserDefaults中保存我的元组数组。但是,当我这样做时,它不起作用。

代码语言:javascript
复制
var tupelArray = [(Name: String, Age: Int)]()
EN

回答 2

Stack Overflow用户

发布于 2018-09-07 13:40:30

你真的不应该使用userDefaults存储自定义对象等,而是使用CoreData或类似的选择。使用userDefaults存储小数据,也可以使用常规应用程序首选项。更多信息,请看这里

如果你真的想存储这个元组数组,那么你可以分别存储一个名字数组和一个年龄数组,并在你想要检索它们时将它们压缩在一起:

代码语言:javascript
复制
typealias MyTuple = (Name: String, Age: Int) //Just for convenience
let tupleArray: [MyTuple] = [(Name: "Thomas", Age: 20),
                   (Name: "Nicolas", Age: 30),
                   (Name: "Andreas", Age: 40)]

要存储tupleArray调用此功能:

代码语言:javascript
复制
saveTuples(array: tupleArray)

其定义如下:

代码语言:javascript
复制
func saveTuples(array: [MyTuple]) {
    let names = array.map{$0.Name}
    let ages = array.map{$0.Age}
    UserDefaults.standard.set(names, forKey: "namesArray")
    UserDefaults.standard.set(ages, forKey: "agesArray")
}

要检索tupleArray,这个代码片段会派上用场:

代码语言:javascript
复制
let namesArray = UserDefaults.standard.object(forKey: "namesArray") as! [String]
let agesArray = UserDefaults.standard.object(forKey: "agesArray") as! [Int]
let retrievedTupleArray = zip(namesArray, agesArray).map {(Name: $0.0, Age: $0.1)}
retrievedTupleArray.forEach {print($0)}
票数 0
EN

Stack Overflow用户

发布于 2018-09-07 14:17:55

保存像你当前所做的那样的元组数组就像试图存储一组自定义对象而不编码/解码|| 存档/取消存档,所以你想要的

代码语言:javascript
复制
struct Item : Codable {

    let name:String

    let age:Int
}

//

代码语言:javascript
复制
let  arr = [Item(name: "hfhfh", age: 23)]

do {

    let data = try JSONEncoder().encode(arr)

    UserDefaults.standard.set(data, forKey: "kkk")

    let storedData = UserDefaults.standard.data(forKey: "kkk")

    let arr = try JSONDecoder().decode([Item].self, from: storedData!)

    print(arr)
}
catch {

    print(error)
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/-100002583

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档