2016-03-15 24 views
1

这对我来说是一个经常性问题 - 我可以使用SwiftyJSON来做到这一点或如何?Alamofire参数与类中的数组

你怎么能透过.POST得到下面的JSON与Alamofire:

{ 
    "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 {... 


我已经试过这样的事情 - 将一个变种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

除了给StudentsOf1969一个dictionary属性,你应该做同样的Student。然后当您调用StudentsOf1969description方法时,它将调用阵列中每个Studentdictionary属性(可以使用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 } 
      ] 
     } 
    } 
} 

注意,我改名为StudentsOf1969ClassOfStudents,使之更加明确,它的更普遍,用于任何班级的学生,而不是那些在1969年还有,你的JSON引用的类名字,而不是教师名字,所以我相应地修改了它。

不管怎么说,你现在可以得到parameters词典通过调用classOf1969dictionary方法:

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

let parameters = classOf1969.dictionary 
+0

太感谢你了!我很早就错过了$ 0.dictionary。对! –