Alamofire 参数与类中的数组
Posted
技术标签:
【中文标题】Alamofire 参数与类中的数组【英文标题】:Alamofire parameter with array in class 【发布时间】:2016-03-15 20:08:30 【问题描述】:这对我来说是一个反复出现的问题 - 我可以使用 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】:除了给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 $0.dictionary
]
注意,我将 StudentsOf1969
重命名为 ClassOfStudents
以更清楚地表明它更普遍地用于任何班级的学生,而不是 1969 年的学生。此外,您的 JSON 引用的班级名称,而不是教师姓名,所以我做了相应的修改。
不管怎样,你现在可以通过调用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
【讨论】:
非常感谢!!在较早的尝试中,我非常想念 $0.dictionary。马上!以上是关于Alamofire 参数与类中的数组的主要内容,如果未能解决你的问题,请参考以下文章
Alamofire4在使用方法时抛出“额外参数方法”:.post
如何在 Swift 3 中使用 Alamofire 在 POST 请求中将给定的 JSON 作为参数发送?