【问题标题】:To create key value pairs according to user input in an array in swift在 swift 中根据用户输入在数组中创建键值对
【发布时间】:2019-01-17 14:51:51
【问题描述】:

我需要根据以下格式的用户输入为键"availabilities" 创建一个键值对数组,以发布数据。对如何做到这一点感到困惑。

"availabilities": [
    {
        "availabilites_start_time": "6:00",
        "availabilites_end_time": "10:00",
        "availabilites_dayofweek": "1.",
        "availabilites_shift": "Morning"
    }
],

【问题讨论】:

  • 你尝试了什么?
  • 我的回答对你有用吗?

标签: ios json swift dictionary key-value


【解决方案1】:

我建议先创建字典的内部数组,然后创建字典的外部数组。

    var myData = [String:Any]()
    var dataArray = [[String:Any]]()
    var finalDict = [String : Any]()

    myData["availabilites_start_time"] = "6:00"
    myData["availabilites_end_time"] = "10:00"
    myData["availabilites_dayofweek"] = "1."
    myData["availabilites_shift"] = "Morning"

    dataArray.append(myData)
    finalDict["availabilities"] = dataArray

    print(finalDict)

 let jsonData = try? JSONSerialization.data(withJSONObject: finalDict, options: [])
let jsonString = String(data: jsonData!, encoding: .utf8)!
print(jsonString)

【讨论】:

    【解决方案2】:

    首先创建一个Struct作为数据模型一个数组作为数据源,如下代码所示。

    struct Availabilities {
    let availabilites_start_time, availabilites_end_time, availabilites_dayofweek, availabilites_shift : String 
    }
    
    var availabilitiesArray = [Availabilities]()
    

    我们免费获得成员初始化器,因此每当用户选择他的选择时,都会使用这些值创建一个可用性实例,如下面的代码 sn-p 所示。

     let availability = Availabilities (availabilites_start_time: "6:00", availabilites_end_time: "10:00", availabilites_dayofweek: "1", availabilites_shift:"Morning" )
    

    由于您有一个可编码的类型结构,您可以使用 JSONEncoder 将您的类型转换为可以写入文件或通过网络发送的数据。

    let jsonEncoder = JSONEncoder()
    let jsonData = try jsonEncoder.encode(availability)
    
    let jsonString = String(data: jsonData, encoding: .utf8)
    print(jsonString)
    

    【讨论】:

      【解决方案3】:

      希望这会有所帮助:

      var availabilitiesDict = [String: Any]()
      availabilitiesDict["availabilities"] = [["availabilites_start_time" : "6:00", "availabilites_end_time": "10:00", "availabilites_dayofweek" : "1.", "availabilites_shift" : "Morning"]]
      
      let jsonData = try? JSONSerialization.data(withJSONObject: availabilitiesDict, options: [])
      let jsonString = String(data: jsonData!, encoding: .utf8)!
      print(jsonString)
      

      【讨论】:

        猜你喜欢
        • 2014-01-22
        • 2015-08-14
        • 2018-03-12
        • 1970-01-01
        • 2014-11-16
        • 1970-01-01
        • 1970-01-01
        • 2017-10-22
        相关资源
        最近更新 更多