gpt4 book ai didi

ios - 可选类型 'String??' 未展开

转载 作者:搜寻专家 更新时间:2023-10-31 08:26:30 26 4
gpt4 key购买 nike

“可选类型 'String??' 的值未展开;您是否打算使用“!”或者 '?'?” -

我今天遇到了这个奇怪的编译器错误,由于 String 之后的两个 问号,这完全令人困惑。

我有一个字典 s,类型为 [String : String?],还有一个接受所有参数为 String? 的函数.具体来说(来自 5813 的 method 将用户选择的信息复制到字典中),我有以下内容的详细版本:

func combine(firstname: String?, lastname: String?) {...}

var text = combine(s["kABPersonFirstNameProperty"], lastname: s["kABPersonLastNameProperty"])

我在第二行收到错误,我想知道为什么会这样。如果 s 中的值是 String? 类型,那么它不应该被 combine() 接受,因为它的参数应该是同一类型?那么,为什么我会收到此错误,我该如何解决呢?

最佳答案

Dictionary<T1, T2>[key]返回 T2? .这是为了在 key 不存在的情况下返回 nil。

所以如果 T2 是 String? , s[key]返回 String??你不能通过 String??作为String?

您也可以像这样调用来解包并为不存在的 key 做准备

var text = combine(s["kABPersonFirstNameProperty"] ?? nil, lastname: s["kABPersonLastNameProperty"] ?? nil)

顺便说一下,下面的代码不会将值设置为 nil,而是会从字典中删除整个条目

s[key] = nil

如果您希望值为 nil 而不是删除条目,则必须这样做

s[key] = nil as String?

关于ios - 可选类型 'String??' 未展开,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31869176/

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