无法提取Dictionary <hashable,String>的字符串值

 苗Tinal3 发布于 2023-01-11 19:02

我已经宣布了下面的字典

var locations:Dictionary = ["loc1":"Los Angeles","loc2":"San Francisco"];

然后试图简单地将它分配给一个variable而不是一个constant

var location:String = locations["loc1"];

但随后编译器抱怨: Value of optional type 'String?' not unwrapped; did you mean to use '!' or '?'?

如果我更改var location:String = locations["loc1"];为var location:String? = locations["loc1"];,这意味着String是可选的,编译器错误就会消失.

但正如你所看到的,我没有将我的字典定义为可选的,例如Dictionary.所以只是想知道为什么Swift将我的值类型转换为场景后面的可选字符串(String?)?

1 个回答
  • 拉取字典值的代码不知道是否locations["loc1"]会返回一个值 - 它也可以返回nil.因此,它不能被赋予非可选项String,因为这将保证String不是nil,但事实并非如此.

    但是,如果您想要location作为非可选String,您可以初始化它,然后使用if let从字典中解包值:

    var location : String = "Unknown"
    if let value = locations["loc1"] {
         location = value
    }
    

    略微冗长,但保证location包含值或"Unknown"不能nil.

    2023-01-11 19:05 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有