如何使用 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 【问题描述】:

我正在尝试将两个不同的值(例如 idname)存储到带有键和值的数组或字典中。有一次,我存储需要转换如下 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"
        
    ]

【问题讨论】:

你想达到什么目的? @Rob print("\(_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?

如何在创建列表时将列表存储在字典中,然后将其清除然后用于具有不同值的下一个键?

如何在 Swift 中解码具有许多唯一键的嵌套 JSON?