数组在 class 中的 Alamofire 参数
Alamofire parameter with array in class
这对我来说是一个反复出现的问题 - 我可以使用 SwiftyJSON 来做这个吗?
如何使用 Alamofire 通过 .POST 获得以下 JSON:
{
"class":"Class of 1969",
"students":
[
{
"name":"A name",
"age":25
},
{
"name": "B name",
"age": 25
}
]
}
我有以下 class:
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:
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],
]
}
}
}
除了给 StudentsOf1969
一个 dictionary
属性,你应该对 Student
做同样的事情。然后当你调用 StudentsOf1969
的 description
方法时,它会为数组中的每个 Student
调用 dictionary
属性(这可以很优雅地完成使用 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 { [=10=].dictionary }
]
}
}
}
请注意,我将 StudentsOf1969
重命名为 ClassOfStudents
以更清楚地表明它更普遍地用于任何 class 学生,而不是 1969 年的学生。此外,您的JSON 引用了 class 姓名,而不是老师姓名,因此我相应地对其进行了修改。
无论如何,你现在可以通过调用classOf1969
的dictionary
方法来获取parameters
字典:
let classOf1969 = ClassOfStudents(className: "Class of 1969", students: [
Student(name: "A name", age: 25),
Student(name: "B name", age: 25)
])
let parameters = classOf1969.dictionary
这对我来说是一个反复出现的问题 - 我可以使用 SwiftyJSON 来做这个吗?
如何使用 Alamofire 通过 .POST 获得以下 JSON:
{
"class":"Class of 1969",
"students":
[
{
"name":"A name",
"age":25
},
{
"name": "B name",
"age": 25
}
]
}
我有以下 class:
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:
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],
]
}
}
}
除了给 StudentsOf1969
一个 dictionary
属性,你应该对 Student
做同样的事情。然后当你调用 StudentsOf1969
的 description
方法时,它会为数组中的每个 Student
调用 dictionary
属性(这可以很优雅地完成使用 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 { [=10=].dictionary }
]
}
}
}
请注意,我将 StudentsOf1969
重命名为 ClassOfStudents
以更清楚地表明它更普遍地用于任何 class 学生,而不是 1969 年的学生。此外,您的JSON 引用了 class 姓名,而不是老师姓名,因此我相应地对其进行了修改。
无论如何,你现在可以通过调用classOf1969
的dictionary
方法来获取parameters
字典:
let classOf1969 = ClassOfStudents(className: "Class of 1969", students: [
Student(name: "A name", age: 25),
Student(name: "B name", age: 25)
])
let parameters = classOf1969.dictionary