Swift 3:如何将struct转换为Parameters

Jas*_*bas 11 serialization ios swift

我有struct如下

struct UserInfo
{
    var userId : Int
    var firstName : String
    var lastName : String
}
Run Code Online (Sandbox Code Playgroud)

如何序列化UserInfo要键入的实例Parameters

var user = UserInfo(userId: 1, firstName: "John", lastName: "Skew")

// Convert user to Parameters for Alamofire
Alamofire.request("https://httpbin.org/post", parameters: parameters)
Run Code Online (Sandbox Code Playgroud)

ale*_*nik 17

只需实现一个dictionaryRepresentation计算变量或函数:

struct UserInfo {
    var userId : Int

    var firstName : String
    var lastName : String

    var dictionaryRepresentation: [String: Any] {
        return [
            "userId" : userId,
            "firstName" : firstName,
            "lastName" : lastName
        ]
    }
}
Run Code Online (Sandbox Code Playgroud)

用法:

var user = UserInfo(userId: 1, firstName: "John", lastName: "Skew")
let userDict = user.dictionaryRepresentation
Run Code Online (Sandbox Code Playgroud)


Noo*_*ass 5

您可以使用CodableFirebase库。虽然它的主要目的是将它与Firebase 实时数据库Firestore 一起使用,但它实际上可以满足您的需求 - 将值转换为 dictionary [String: Any]

您的模型将如下所示:

struct UserInfo: Codable {
    var userId : Int
    var firstName : String
    var lastName : String
}
Run Code Online (Sandbox Code Playgroud)

然后您可以通过以下方式将其转换为字典:

import CodableFirebase

let model: UserInfo // here you will create an instance of UserInfo
let dict: [String: Any] = try! FirestoreEncoder().encode(model)
Run Code Online (Sandbox Code Playgroud)