Ios 从Swift 5中的数组创建字典
我需要从数组中为数组的第一个索引创建一个自定义类型的字典 样本数组:[ABC,ZYZ,123] 所需结果:[{name:ABC,type:A},{name:ZYZ,type:B},{name:123,type:B}] 注意第一个索引的类型A 我的代码Ios 从Swift 5中的数组创建字典,ios,arrays,swift,dictionary,Ios,Arrays,Swift,Dictionary,我需要从数组中为数组的第一个索引创建一个自定义类型的字典 样本数组:[ABC,ZYZ,123] 所需结果:[{name:ABC,type:A},{name:ZYZ,type:B},{name:123,type:B}] 注意第一个索引的类型A 我的代码 for url in urlArray { urlDict["name"] = url } 使用map:将数组的每个元素转换为字典,如下所示: 使用map:将数组的每个元素转换为字典,如下所示: 我想您可以使用高阶函数,如
for url in urlArray {
urlDict["name"] = url
}
使用map:将数组的每个元素转换为字典,如下所示:
使用map:将数组的每个元素转换为字典,如下所示:
我想您可以使用高阶函数,如map或reduce 下面是一个使用reduce的示例 结果是: [[类型:A,名称:ABC],[类型:B,名称:ZYZ],[名称: 123,类型:B]]
我想您可以使用高阶函数,如map或reduce 下面是一个使用reduce的示例 结果是: [[类型:A,名称:ABC],[类型:B,名称:ZYZ],[名称: 123,类型:B]] 您可以进行映射,然后分别更改第一个词典的类型:
var dicts = urlArray.map { ["name": $0, "type": "B"] }
dicts[0]["type"] = "A"
let resultDict: [String: String]
= array.reduce(into: [:]) { dict, url in
dict["name"] = url
}
看看你所有的字典键都是一样的,并且你正在把它发送到服务器,一个可编码的结构可能是一个更好的选择
struct NameThisProperly : Codable {
var name: String
var type: String
}
var result = urlArray.map { NameThisProperly(name: $0, type: "B") }
result[0].type = "A"
do {
let data = try JSONDecoder().encode(result)
// you can now send this data to server
} catch let error {
...
}
您可以进行映射,然后分别更改第一个词典的类型:
var dicts = urlArray.map { ["name": $0, "type": "B"] }
dicts[0]["type"] = "A"
let resultDict: [String: String]
= array.reduce(into: [:]) { dict, url in
dict["name"] = url
}
看看你所有的字典键都是一样的,并且你正在把它发送到服务器,一个可编码的结构可能是一个更好的选择
struct NameThisProperly : Codable {
var name: String
var type: String
}
var result = urlArray.map { NameThisProperly(name: $0, type: "B") }
result[0].type = "A"
do {
let data = try JSONDecoder().encode(result)
// you can now send this data to server
} catch let error {
...
}
因为您关心索引,所以我的方法将使用枚举,它给出索引 让数组=[ABC,ZYZ,123] 变量结果:[[String:String]=[] 对于i,枚举数组中的内容{ 让类型:String=i==0?A:B results.append[名称:内容,类型:类型] } 打印结果 //[[类型:A,名称:ABC],[名称:ZYZ,类型:B],[类型:B,名称:123]]
因为您关心索引,所以我的方法将使用枚举,它给出索引 让数组=[ABC,ZYZ,123] 变量结果:[[String:String]=[] 对于i,枚举数组中的内容{ 让类型:String=i==0?A:B results.append[名称:内容,类型:类型] } 打印结果 //[[类型:A,名称:ABC],[名称:ZYZ,类型:B],[类型:B,名称:123]] 使用reduce将数组转换为字典:
var dicts = urlArray.map { ["name": $0, "type": "B"] }
dicts[0]["type"] = "A"
let resultDict: [String: String]
= array.reduce(into: [:]) { dict, url in
dict["name"] = url
}
结果如下所示:
[
"name": URL1,
"name": URL2
]
使用reduce将数组转换为字典:
var dicts = urlArray.map { ["name": $0, "type": "B"] }
dicts[0]["type"] = "A"
let resultDict: [String: String]
= array.reduce(into: [:]) { dict, url in
dict["name"] = url
}
结果如下所示:
[
"name": URL1,
"name": URL2
]
这里的逻辑是什么?为什么第一个字典的类型是:A,而其他字典的类型是:B?数组的第一个索引需要分别发送到服务器。所以它总是第一个索引?数组的内容是什么并不重要,对吧?这里的逻辑是什么?为什么第一个字典的类型是:A,而其他字典的类型是:B?数组的第一个索引需要分别发送到服务器。所以它总是第一个索引?数组的内容是什么并不重要,对吧?堆栈溢出时不鼓励只使用代码的答案,因为它们没有解释它是如何解决问题的。请编辑您的答案,以解释此代码的作用以及它如何回答问题,以便对OP以及具有类似问题的其他用户有用。对于堆栈溢出,不建议使用纯代码答案,因为它们不会解释此代码如何解决问题。请编辑您的答案,以解释此代码的作用以及它如何回答问题,以便对OP以及具有类似问题的其他用户有用。