【发布时间】:2016-06-30 18:47:49
【问题描述】:
我的问题是:为什么我的方法返回一个带有 .responseArray 的空 json 数组?
我的 REST-API 有以下 JSON:
[
{
"id": 1,
"title": "Crazy",
"startDate": "2016-07-16 22:00:00.0",
"endDate": "2016-07-17 03:00:00.0",
"location": "Crazy",
"description": "Crazy",
"avatar": "base64"
},
{
"id": 2,
"title": "Crazy title",
"startDate": "2016-07-16 22:00:00.0",
"endDate": "2016-07-17 03:00:00.0",
"location": "Crazy",
"description": "Something",
"avatar": "base64"
},
{
"id": 3,
"title": "Crazy",
"startDate": "2016-07-16 22:00:00.0",
"endDate": "2016-07-17 03:00:00.0",
"location": "Crazy",
"description": "Crazy",
"avatar": "base64"
},
{
"id": 4,
"title": "Crazy",
"startDate": "2016-07-16 22:00:00.0",
"endDate": "2016-07-17 03:00:00.0",
"location": "Crazy",
"description": "Crazy",
"avatar": "base64"
}]
如您所见,json 是一个包含多个对象的数组。
我使用 AlamofireObjectMapper 将 json 映射为对象,但它返回给我一个空数组:
func getEventFromApiWebService(completionHandler: (event: [Event]) -> ()){
Alamofire.request(ApiRouter.Get("/events"))
.validate()
.responseArray(completionHandler: { (response: Response<[Event], NSError>) in
//Attempt to print result value which returns empty Array
let eventArray = response.result.value
print(eventArray!)
completionHandler(event: response.result.value!)
})
}
以下代码确实适用于 .responseJSON:
func test(){
Alamofire.request(ApiRouter.Get("/events"))
.responseJSON { response in
print(response.result.value!)
}
}
但是这里没有映射。
事件类:
import ObjectMapper
import RealmSwift
class Event: Object, Mappable {
dynamic var id = 0
dynamic var eventID = 0
dynamic var title: String? = nil
dynamic var startDate: NSDate? = nil
dynamic var endDate: NSDate? = nil
dynamic var location: String? = nil
dynamic var desc: String? = nil
dynamic var avatar: NSData? = nil
override static func primaryKey() -> String? {
return "id"
}
required convenience init?(_ map: Map) {
self.init()
if map["id"].value() == nil {
return nil
}
if map["title"].value() == nil {
title = ""
}
if map["startDate"].value() == nil {
startDate = nil
}
if map["endDate"].value() == nil {
endDate = nil
}
if map["location"].value() == nil {
location = ""
}
if map["description"].value() == nil {
desc = ""
}
if map["avatar"].value() == nil {
avatar = nil
}
}
func mapping(map: Map) {
self.eventID <- map["id"]
self.title <- map["title"]
self.startDate <- map["startDate"]
self.endDate <- map["endDate"]
self.location <- map["location"]
self.desc <- map["description"]
self.avatar <- map["avatar"]
}
}
【问题讨论】:
标签: json swift alamofire objectmapper