当我创建 JSON 的输出时,Alamofire 的 Optional({}) 是什么意思

What is Optional({}) at Alamofire mean when i create output of JSON

当我使用 Alamofire 创建 JSON 的输出时,我在我的控制台中看到了这个 Optional({}) 是什么意思?

Optional({
    0 =     (
        All,
        ""
    );
    C2001 =     (
        "ARAI Bay Side"
    );
    C2002 =     (
        "ARAI Fukuoka"
    );
})

我是 swift 和这个的新手,有什么想法吗?

你看到的是 print()println() 等全局函数的输出,它在 Optional( ) 中包含可选描述,除非可选的值为 nil,其中case 只打印 nil

如果你有这个:

var foo: Int?
foo = 7
println(foo)

输出为Optional(7)

println(foo!)

只打印 7

Alamofire给你的是一个可选变量,因为它无法提前预测请求成功有输出还是失败有none.

同样,它也给你一个 error? 变量(注意 ?,这意味着它也是一个可选的),如果请求成功,它将是 nil 或者是什么(很可能是 NSError)如果发生错误。

您可以使用 if yourVariable != nil 检查可选变量是否已设置(包含某些内容),在这种情况下您可以使用 yourVariable!.

解包它

您还可以使用以下内容:

if let yourUnwrappedVariable = yourVariable!

将变量解包到一个新的(非可选的)yourUnwrappedVariable 变量中并执行 if 块中的代码,如果变量已设置(包含某些东西,不是 nil),这次不需要像前面的例子那样再次解包变量(这里你已经有了 yourUnwrappedVariable 变量,可以立即在 if 块中使用它)。

最后,如果您确定该变量将始终被设置,您可以通过将它后跟一个 ! 符号传递给您想要的任何方法调用来打开它,如下所示:

myMethod(initWithData: yourVariable!, anotherArgument: anotherValue)

如果变量碰巧不包含任何内容,将抛出异常。