在我的代码中,我在展开一个 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/