【问题标题】: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)