如何使用 Swift 将具有两个不同键的两个值存储到数组或字典中? [关闭]
Posted
技术标签:
【中文标题】如何使用 Swift 将具有两个不同键的两个值存储到数组或字典中? [关闭]【英文标题】:How to store two values with two different key into array or dictionary using Swift? [closed] 【发布时间】:2020-01-09 06:20:01 【问题描述】:我正在尝试将两个不同的值(例如 id
和 name
)存储到带有键和值的数组或字典中。有一次,我存储需要转换如下 JSON 格式。如何做到这一点?
我的值存储到数组或字典中
do
let dateCreated = results as! [Student]
for _datecreated in dateCreated
print("\(_datecreated.id!)-\(_datecreated.name!)") // This two Value I need store into array or dictionary and convert like below JSON format
catch let err as NSError
print(err.debugDescription)
必需的 JSON 格式
"status": true,
"data": [
"id": "20",
"name": "a"
,
"id": "21",
"name": "b"
,
"id": "22",
"name": "c"
]
【问题讨论】:
你想达到什么目的? @Robprint("\(_datecreated.id!)-\(_datecreated.name!)")
这两个值我需要转换成上面提到的JSON格式,并且JSON格式需要分配一个变量用于服务器传递。
检查这个:***.com/questions/29512839/create-json-in-swift/…
***.com/help/how-to-ask 和 ***.com/help/minimal-reproducible-example
有关您的相关/重复问题,请参阅 my response。
【参考方案1】:
这可能会帮助你...:)
var data = [Any]()
// call this function on time of get data or adding data
func info (id : Int , name : String)
var information = [id : name]
data.append(information)
//this function will generate final formate
func create_formate() -> [String:Any]
var final_formate = [String:Any]()
final_formate["status"] = true
final_formate["data"] = data
return final_formate
【讨论】:
谢谢你,我会尽力在这里更新你。 我会等你的正确标记... :) 如果我想在没有状态和数据的情况下发送,我该怎么做? 你的意思是 blenk.. ? 如果我想发送服务器,它的发布是这样的 ` \”name\”:\”(\\n \\n id = 78;\\n name = a;\\ n \\n)\"")` 但需要像这样正确发送[[“name”: "a", "id": "78"]]
【参考方案2】:
1.数组: 您不能使用 Array 来存储 JSON。因为它只能存储相同的数据类型值。 JSON 有不同的数据类型,如 String、Int、Boolean、Array。
2.字典: 您可以使用字典数组将学生数据存储在 JSON 中。 JSON 结构使用 Dictionary "key" : "value" 和 Array [element1,element2]。如果您观察到这种模式,您可以在 Dictionary 中存储任何 JSON 数据
class Student
let id : String
let name : String
init(id : String , name :String)
self.id = id
self.name = name
let data1 = Student(id: "20", name: "a")
let data2 = Student(id: "21", name: "b")
let data3 = Student(id: "22", name: "c")
let status = true
let dataArray = [data1,data2,data3]
// Use array of dictory because Each student details are in a Dictoray.
var dataDictArray = [[String:String]]()
for data in dataArray
var dataDict = [String : String]()
dataDict["id"] = data.id
dataDict["name"] = data.name
dataDictArray.append(dataDict)
var jsonDict = [String : Any]()
jsonDict["status"] = status
jsonDict["data"] = dataDictArray
print(jsonDict)
输出:-
(lldb) p jsonDict
([String : Any]) $R4 = 2 key/value pairs
[0] =
key = "data"
value = 3 values
[0] = 2 key/value pairs
[0] = (key = "name", value = "a")
[1] = (key = "id", value = "20")
[1] = 2 key/value pairs
[0] = (key = "name", value = "b")
[1] = (key = "id", value = "21")
[2] = 2 key/value pairs
[0] = (key = "id", value = "22")
[1] = (key = "name", value = "c")
[1] =
key = "status"
value = true
希望您对在 Dictory 中存储 JSON 有更好的了解。
【讨论】:
以上是关于如何使用 Swift 将具有两个不同键的两个值存储到数组或字典中? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章
如何在jquery中将两个具有不同键的不同数组组合成一个数组
在多重映射中,当两个迭代器保存具有映射到不同 Value 的相同键的值时。我们如何才能在地图中找到它们中的哪一个在另一个之前
如何使用包含Swift中相同键的多个值的查询参数构建URL?