2016-03-15 54 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。對! –