Ios Swift:键没有数据异常,尽管检查为零
我对这一点感到抓狂,我认为检查nil的全部目的是确保在运行时忽略不安全的变量,从而使应用程序不会崩溃 我已尝试检查从服务器返回的密钥是否为nil,还尝试了可选链接以测试nil,两者都不起作用,我仍然收到错误:Ios Swift:键没有数据异常,尽管检查为零,ios,swift,Ios,Swift,我对这一点感到抓狂,我认为检查nil的全部目的是确保在运行时忽略不安全的变量,从而使应用程序不会崩溃 我已尝试检查从服务器返回的密钥是否为nil,还尝试了可选链接以测试nil,两者都不起作用,我仍然收到错误: Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Key "avatar" has no data. Call fetchIfNeeded before getti
Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Key "avatar" has no data. Call fetchIfNeeded before getting its value.'
我知道这意味着找不到阿凡达密钥的数据,但是由于我正在运行的测试,我不明白为什么会出现这个错误
for var i = 0; i < recipients.count; i++
{
if let u = recipients[i] as PFUser!
{
if u.valueForKey("avatar") != nil
{
println(i)
}
}
}
这两次应用程序都会崩溃,并抛出上述异常。我的堆栈跟踪没有显示任何其他有用的内容,但是println语句将打印0、1,然后在集合大小为4的元素2上崩溃,因此我没有超出范围
关于如何解决这个问题,有什么想法吗?嗯,听起来可能有点奇怪,但我的答案是:不要使用解析框架。它制造的问题比解决的问题多。。就我的2美分。我完全同意迈克尔,我不会再使用它了。作为我学位的一部分,我使用它是为了进一步学习,我更愿意为未来的项目编写自己的api。你可以告诉你的老师,使用解析太简单了,而且你很有野心,想要一个好成绩,想学很多东西,所以你决定编写自己的后端-即使你已经开始使用解析。。顺便说一句,也不要使用AFNetworking,只需使用NSURLConnection,它知道如何充分地发出HTTP请求。不幸的是,截止日期还有两天,所以现在要继续解析。但你是对的,这太容易了,并没有让我更有效率。我对后端架构太过熟悉了,我们都从错误中吸取了教训。也谢谢你的建议,这是我的第一个ios项目,所以很高兴知道最佳实践,以供将来参考:是的,我想帮助你更多,但调试解析错误在过去对我来说是一件痛苦的事情。如果您需要快速解决问题,只需使用try/catch异常处理;
if let image: UIImage = UIImage(data: (u["avatar"]!.getData() as NSData?)!) {}