代码之家  ›  专栏  ›  技术社区  ›  Chris G.

类中具有数组的Alamofire参数

  •  1
  • Chris G.  · 技术社区  · 9 年前

    这对我来说是一个反复出现的问题——我可以使用SwiftyJSON来实现这一点吗?

    如何使用Alamofire通过.POST获取以下JSON:

    {
        "class":"Class of 1969",
            "students": 
            [
                {
                    "name":"A name",
                    "age":25
                },
                {
                    "name": "B name",
                    "age": 25
                }
            ]
    }
    

    我有以下课程:

    import UIKit
    
    import SwiftyJSON
    
    class Student{
        var Name:String = ""
        var Age: Int = 0
    }
    
    class StudentsOf1969{
        var Teacher: String = ""
        var Students = [Student]()
       }
    


    阿拉莫火

            Alamofire.request(.POST,
                strUrl,
                parameters: parameters, // How?????????
                encoding: .JSON,
                headers: headersWish).responseObject {...
    


    我尝试过这样的方法——添加一个var dictionary: [String: AnyObject] 到班级:

    class Student{
        var Name:String = ""
        var Age: Int = 0
    }
    
    class StudentsOf1969{
        var Teacher: String = ""
        var Students = [Student]()
    
    var dictionary: [String: AnyObject]{
        get {
            return [
                "teacher": self.Teacher,
                "students": self.Students,
                // or
                "students": [self.Students],
                ]
        }
    }
    
    
       }
    
    1 回复  |  直到 9 年前
        1
  •  1
  •   Rob Md Fahim Faez Abir    9 年前

    除了给予 StudentsOf1969 dictionary 属性,您应该对 Student 。然后当你打电话给 description 方法 1969年学生 ,它将调用 词典 每个的属性 大学生 在数组中(可以用Swift的 map 功能)。

    例如:

    struct Student {
        var name: String
        var age: Int
    
        var dictionary: [String: AnyObject] {
            get {
                return ["name": name, "age": age]
            }
        }
    }
    
    struct ClassOfStudents {
        var className: String
        var students: [Student]
    
        var dictionary: [String: AnyObject] {
            get {
                return [
                    "class": className,
                    "students": students.map { $0.dictionary }
                ]
            }
        }
    }
    

    注意,我重命名了 1969年学生 ClassOfStudents 更明确地说,它通常用于任何一类学生,而不是1969年的学生。此外,您的JSON引用了类名,而不是教师名,所以我对其进行了相应的修改。

    无论如何,你现在可以得到 parameters 通过调用字典 词典 方法 classOf1969 :

    let classOf1969 = ClassOfStudents(className: "Class of 1969", students: [
        Student(name: "A name", age: 25),
        Student(name: "B name", age: 25)
    ])
    
    let parameters = classOf1969.dictionary