gpt4 book ai didi

ios - 快速转换为可选值

转载 作者:可可西里 更新时间:2023-10-31 23:59:30 26 4
gpt4 key购买 nike

当我写这篇文章时:

// json is of type AnyObject
var status : String? = json.valueForKeyPath("status") as String?

Xcode 似乎在编译过程中陷入无限循环: Xcode

我的代码有问题吗?

我做了一些测试,当我写的时候:

var status : String? = json.valueForKeyPath("status") as? String

Xcode 能够编译,但是当 valueForKeyPath 将返回 nil 时会有什么行为。

最佳答案

正如文档所说:

Because downcasting can fail, the type cast operator comes in two different forms. The optional form, as?, returns an optional value of the type you are trying to downcast to.

Excerpt From: Apple Inc. “The Swift Programming Language.” iBooks. https://itun.es/au/jEUH0.l

这意味着当你写 as? String,返回值自动包装在一个可选的给你,所以实际产生的类型是String?,这是你想要的行为,所以你的第二个选项是正确的.

在您的第一个示例中,您尝试转换 valueForKeyPath 返回的值,该值的类型为 AnyObject!(! 表示 < em>隐式 解包) 到String?,它被显式 包装,并且这个值不会自动包装在可选中,所以,因为这些类型不相同,在它们之间进行转换可能行不通。

TL;DR:您的第一个选项实际上是不正确的(尽管它不应该使编译器崩溃,这是一个错误),而您的第二个选项是正确的并且可以满足您的要求。

关于ios - 快速转换为可选值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24206353/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com