我正在尝试检查NSDictionary中是否存在密钥,然后处理该案例。但是,当值为零时,为什么这个案例得到满足?
results: NSDictionary
println(results)
打印出来:
{
error = (
{
code = 402;
message = "User exists for this email";
username = "xyz@gmail.com";
}
);
}
但是当我检查if块时,为什么会进入?
if(results["results"])
{
println("why here?");
}
这里如果(nil)失败,但不是。 我也尝试使用results.valueForKey(“results”),results.objectForKey(“results”),但所有这些都给出了异常。
如果我使用它,它会因运行时错误崩溃:
if let dict: results["results"]
更新: 刚刚发现控件在第一次正确计算后跳转到函数的开头,然后发生运行时。那么为什么函数循环两次然后崩溃?
答案 0 :(得分:3)
这不是我所看到的行为。以下代码按预期打印"just what I expect"
。
let results: NSDictionary = ["foo": "bar"]
if results["baz"] {
println("why here?");
} else {
println("just what I expect");
}
你的问题中没有涉及的其他内容。
答案 1 :(得分:1)
我在操场上尝试这个:
// Playground - noun: a place where people can play
import UIKit
var results = ["foo": "fooVar", "bar": "barVar"]
// ["foo": "fooVar", "bar": "barVar"]
results["foo"]
// {Some "fooVar"}
results["baz"] == nil
// true
if results["baz"]
{
"hi"
// not shown
}
else
{
"seems to be working"
//shown.
}
所以你的程序中必须有其他东西导致这种情况。
答案 2 :(得分:0)
正如@Undo在上面的答案中提到的那样,它在函数的后半部分确实存在问题,并且以不正确的方式抛出异常JSON数据被解析为NSDictionary。但是,xcode没有显示异常发生的位置,而是尝试跟踪函数并在函数的退出点显示异常。
修复JSON解析,删除了错误。最好编写适当的错误处理程序以避免这种问题。