【问题标题】:Could not cast value of type 'Swift.Optional<Swift.AnyObject>' (0x7f9d44715db0) to 'NSArray' (0x60000004f4f8)无法将“Swift.Optional<Swift.AnyObject>”(0x7f9d44715db0)类型的值转换为“NSArray”(0x60000004f4f8)
【发布时间】:2017-08-02 19:56:18
【问题描述】:

我正在尝试检查 responseObject != nil 但它总是返回 true。

我不知道(如何检查ANY?nil 值)

这是我的代码

success: { (operation: AFHTTPRequestOperation?,responseObject: Any?) in
                print("view service reponse: \(String(describing: responseObject))")
                print("view service reponse: \(responseObject!)")                
                if responseObject != nil
                {
                    let jsonObjects : NSArray = responseObject as! NSArray
                    print("All data1 : \(String(describing: jsonObjects))")

                    for dataDict : Any in jsonObjects {

崩溃问题

在日志消息中:

查看服务响应:可选(无)

查看服务响应:无

无法将“Swift.Optional”(0x7f9d44715db0)类型的值转换为“NSArray”(0x60000004f4f8)。 (lldb)

我也试过下面的代码,

if let jsonOject = responseObject as? NSArray {
    // mean your responce is array type
}
else{
    // oterwise your responce in not array
}

但我还是遇到了崩溃......

【问题讨论】:

  • 请发帖responseObject
  • responseObject 肯定渴望别的东西。你会因为类型转换错误而崩溃。您需要将其转换为所需的类型。
  • responseObject 是 NSDictionary
  • 在这里我更新了我的帖子@RAJAMOHAN-S
  • 如果responseObject != nil 成功,那么您需要取消引用responseObject。它在可选项中包含可选项。通常可选的是.some&lt;T&gt;.none。您的类型包含.some&lt;.none&gt;。并且不要在 Swift 中使用 NSArray / NSDictionary。使用本机类型。并且不要注释编译器可以推断的类型

标签: ios swift


【解决方案1】:

尝试使用 Array 而不是 NSArray。 从 Objective C 迁移到 Swift 时,人们倾向于使用 NSArray 和 NSDictionary。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-03-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-07
    • 1970-01-01
    相关资源
    最近更新 更多