从 'Result<AnyObject>' 转换为不相关类型 'NSArray' 总是失败
Posted
技术标签:
【中文标题】从 \'Result<AnyObject>\' 转换为不相关类型 \'NSArray\' 总是失败【英文标题】:Cast from 'Result<AnyObject>' to unrelated type 'NSArray' always fails从 'Result<AnyObject>' 转换为不相关类型 'NSArray' 总是失败 【发布时间】:2015-08-02 10:41:45 【问题描述】:以下代码在 XCode 6/Swift 1 上运行正常,但在 XCode 7/Swift 2 上给我一个错误
Alamofire.request(.POST, "\(self.REQ_URL)", parameters: parameters).validate(contentType: ["application/json"]).responseJSON(options: [], completionHandler: (req, resp, data) -> Void in
let data_ar = data as! NSArray //here I get the error
)
我得到的错误是
从“结果”转换为不相关类型“NSArray”总是失败
我应该如何使用返回的 JSON?
【问题讨论】:
【参考方案1】:似乎语法已经改变,下面的作品
Alamofire.request(.POST, "\(self.REQ_URL)", parameters: parameters)
.responseJSON request, response, result in
switch result
case .Success(let data):
let data_ar = data as! NSArray
case .Failure(let data, let error):
print("Request failed with error: \(error)")
【讨论】:
【参考方案2】:以防万一您将 swiftyjson 用于 xcode 7 分支,
Alamofire.request(.POST, "\(self.REQ_URL)", parameters: parameters)
.responseJSON request, response, result in
switch result
case .Success(let data):
let json = JSON(data)
let something = json["aaa"].string
....
case .Failure(let data, let error):
print("Request failed with error: \(error)")
【讨论】:
以上是关于从 'Result<AnyObject>' 转换为不相关类型 'NSArray' 总是失败的主要内容,如果未能解决你的问题,请参考以下文章
无法将 '[String : AnyObject]?.Type' 类型(又名 'Optional<Dictionary<String, AnyObject>>.Type)的值转
在 Swift 中使用 JSON 的 Alamofire 请求后,如何在 AnyObject 中转换 <AnyObject> 响应?
如何将 Array<AnyObject> 转换为空数组变量?
错误:无法将 [anyobject] 转换为强制类型数组<_>
转换非托管<AnyObject>!在 Swift 中使用布尔值
无法使用类型为“((AnyObject!,NSInteger,UnsafeMutablePointer<ObjCBool>)->())”的参数列表调用“enumerateObje