Alamofire参数与类中的数组

时间:2016-03-15 20:08:30

标签: swift2 alamofire swifty-json

对我来说这是一个经常出现的问题 - 我可以使用SwiftyJSON来完成这项工作吗?

如何通过.POST与Alamofire获得以下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

        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 个答案:

答案 0 :(得分:1)

除了StudentsOf1969 dictionary属性之外,您应该对Student执行相同的操作。然后当您调用description的{​​{1}}方法时,它将为数组中的每个StudentsOf1969调用dictionary属性(可以使用Swift {{{{{{ 1}}功能)。

例如:

Student

注意,我将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年的学生。此外,您的JSON引用了类名,而不是老师的名字,所以我相应修改了。

无论如何,您现在可以通过调用StudentsOf1969的{​​{1}}方法获取ClassOfStudents词典:

parameters