Swift 我的代码在一周后停止工作-致命错误:在展开可选值时意外发现nil
自从我写了这段代码以来,它一直在为我工作,但今天它决定放弃对我的工作。我一天中的大部分时间都在试图解决这个问题,这让我慢慢发疯。我一直收到一个“致命错误:在展开可选值时意外发现nil”错误。我明白它的意思,但我似乎无法修复它。我找到了这个线索,并尝试了这个解决方案,但没有成功。这是我的密码:Swift 我的代码在一周后停止工作-致命错误:在展开可选值时意外发现nil,swift,parse-platform,ios8,Swift,Parse Platform,Ios8,自从我写了这段代码以来,它一直在为我工作,但今天它决定放弃对我的工作。我一天中的大部分时间都在试图解决这个问题,这让我慢慢发疯。我一直收到一个“致命错误:在展开可选值时意外发现nil”错误。我明白它的意思,但我似乎无法修复它。我找到了这个线索,并尝试了这个解决方案,但没有成功。这是我的密码: if let userImageFile: AnyObject = content["imageFile"] as? PFFile { println("Here is your userImageFile
if let userImageFile: AnyObject = content["imageFile"] as? PFFile {
println("Here is your userImageFile: \(userImageFile)")
userImageFile.getDataInBackgroundWithBlock { (imageData:NSData!, error:NSError!) -> Void in
if error == nil
{
var contentImage = UIImage(data: imageData)
self.feedView.image = contentImage
}
}
}
我知道userImageFile不是nil,因为我在getDataInBackgroundWithBlock之前输入的打印行正确地打印出我试图从解析数据浏览器访问的PFFile。我只是不明白它怎么能工作一周然后突然停止工作。如果有人能帮助我,我将非常感激。谢谢
回答
所以,在我的头撞到我的桌子上好几个小时后,我终于说“去它吧”并删除了我的代码,只是为了重新编写它并让它再次工作……这是现在可以工作的代码,但我也用下面帖子的建议对它进行了一些更新
if let imageFile: AnyObject = content["imageFile"] as? PFFile {
imageFile.getDataInBackgroundWithBlock({ (imageData:NSData!, error:NSError!) -> Void in
if let imageData = imageData
{
dispatch_async(dispatch_get_main_queue())
{
var contentImage = UIImage(data: imageData)
self.feedView.image = contentImage
}
}
else
{
//Do something else
}
})
}
即使
userImageFile
不是nil
,也假定传递给闭包的imageData
不是nil
。我将检查该映像是否确实存在于服务器端,并修改您的关闭代码,如下所示:
if let imageData = imageData {
dispatch_async(dispatch_get_main_queue()) {
var contentImage = UIImage(data: imageData)
self.feedView.image = contentImage
}
} else {
// Something happened
}
记住,显式展开的可选技术上可以是
还请注意,您正在从可能不是主线程的线程修改UI组件。最好在主线程上用
dispatch\u async
将其括起来。感谢您的响应,我尝试了您的代码,但仍然得到相同的“致命错误:在展开可选值时意外发现nil”错误。您能逐行检查代码并找出引发异常的行吗?当我尝试单步进入代码时,它将我带到包含上述代码的viewController,但它不会突出显示任何特定的行……也许我做错了?我还编辑了我的问题,以包括我收到的错误的屏幕截图。您是否尝试设置断点?好的地方是if
语句,以及closureYes中的第一行,第一次出现错误的地方是if let imageData=imageData行…在该点之前设置的所有断点都有效