swift - fatal error : unexpectedly found nil while unwrapping an Optional value in swift Json parsing

标签 swift

在我的代码中,我在展开一个 Optional 值时遇到了意外发现 nil 的崩溃,但我不知道如何解决这个问题,所以请说出我在这段代码中犯了什么错误以及如何解决这个问题,我完全困惑最近几天是因为我是 swift 的新手?

这里我给出我的代码......

            let dataArr : NSArray = responseObject.valueForKeyPath("response.result") as! NSArray
            print(dataArr)

            for vartype : AnyObject in dataArr
            {
                let titleStr : NSString = vartype.valueForKey("title") as! NSString
                let messageStr : NSString = vartype.valueForKey("message") as! NSString
                let date_updatedStr : NSString = vartype.valueForKey("date_updated") as! NSString
                let postprofilephotoStr : NSString = vartype.valueForKey("postprofilephoto") as! NSString
                let imgattachStr : NSString = vartype.valueForKey("attachments.image") as! NSString  -----> //From This line I get the issue.
                let audioattachStr : NSString = vartype.valueForKey("attachments.audio") as! NSString
                let videoattachoStr : NSString = vartype.valueForKey("attachments.video") as! NSString
                let ptypeStr : NSString = vartype.valueForKey("ptype") as! NSString
                let attachmentStr : NSString = vartype.valueForKey("attachments") as! NSString

            }                
            self.tableView.reloadData()

            print("JSON: " + responseObject.description)
        },
        failure: { (operation: AFHTTPRequestOperation!,
            error: NSError!) in
            print("Error: " + error.localizedDescription)


        })

最佳答案

请检查您的对象 vartype。显然关键路径 attachments.image 不存在于其中。

当您尝试在不检查 nil 的情况下强制解包可选时,此崩溃必然会发生(如果该可选实际上是 nil)。

为了防止这种崩溃,请使用 if let 语法来解包可选值。

编辑: 发布 OP 评论 - 试试这个:

if let value : AnyObject = vartype.valueForKey("attachments.image") {
    imgattachStr = value as! NSString
}

您应该对所有可选强制展开进行此安全检查。

关于swift - fatal error : unexpectedly found nil while unwrapping an Optional value in swift Json parsing,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33514924/

相关文章:

ios - swift 等待用户响应

ios - 如何将解析的 JSON 数据放入 CollectionViewCell

swift - TVOS spritekit 游戏资料存档位置

ios - AdMob Ios 导致帧率下降

ios - 检测 iOS 应用进入后台

ios - 插入耳机时奇怪的 AVMutableComposition 行为

ios - Firebase Crashlytics 不显示设备上应用崩溃的报告

swift - iOS 14上的TableView中会出现一个额外的UITableViewCellContentView叠加层,可防止点击,但在iOS 13上可以正常工作

ios - Swift 无法识别的选择器发送到实例错误

swift - 无法使用 NumberFormatter Swift4 将非常小的字符串值转换为十进制