【发布时间】:2016-02-01 00:55:06
【问题描述】:
Swift 2.1 Xcode 7.1 Alamofire 2.0.2
使用我在下面描述的 Alamofire 函数,我正在从 API 中以 JSON 格式检索传单列表:
Alamofire.request(Router.GetList()).responseJSON { (_, _, result) in
var flyers = [Flyer]()
switch result {
case .Success(let json):
if let responseObject = json as? [String: AnyObject], let hits = responseObject["hits"] as? [[String: AnyObject]] {
print(hits)
for dictionary in hits {
flyers.append(Flyer(dictionary: dictionary))
}
completionHandler(flyers, nil)
}
case .Failure(_, let error):
completionHandler(nil, error as NSError)
}
}
print(hits) 的 JSON 响应结果是:
[["title": Code 103,
"event": {
"_id" = 54b0561f274441073751;
name = "Code 103";
}
],
["title": Code 104,
"event": {
"_id" = 54b0561f274441073752;
name = "Code 104";
}
]]
如下所示,Flyer 类有一个属性(“事件”),它引用了 Event 类的两个属性,id and name:
class Flyer: NSObject{
var title: String?
var event: Event?
init(dictionary: [String: AnyObject]) {
title = dictionary["title"] as? String
event = Event(dictionary: dictionary["event"] as! [String: AnyObject])
}
}
class Event: NSObject{
var id: String?
var name: String?
init(dictionary: [String: AnyObject]){
id = dictionary["id"] as? String
name = dictionary["name"] as? String
}
}
我收到下一个错误:
Could not cast value of type 'NSNull' (0x107d50378) to 'NSDictionary' (0x107d4fd60).
这个错误位于Flyer类中的一行:
event = Event(dictionary: dictionary["event"] as! [String: AnyObject])
而且我不知道我能做些什么来解决这个问题,因为响应不为空。感谢帮助
【问题讨论】:
-
看来
event键的值可以是nil,它由NSNull对象表示。过滤这些案例并相应地处理它们。