Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/113.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios Swift:键没有数据异常,尽管检查为零_Ios_Swift - Fatal编程技术网

Ios Swift:键没有数据异常,尽管检查为零

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

我对这一点感到抓狂,我认为检查nil的全部目的是确保在运行时忽略不安全的变量,从而使应用程序不会崩溃

我已尝试检查从服务器返回的密钥是否为nil,还尝试了可选链接以测试nil,两者都不起作用,我仍然收到错误:

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?)!) {}