[英]Error: Cannot assign value of type '[String]' to type 'String' in swift
[英]Cannot assign value of type 'String??' to type 'String?' error
假设我定义了一个 class
class Dummy {
var title: String?
}
我有一本字典
let foo: [Int: String?] = [:]
然后当我进行如下分配时
var dummy = Dummy()
dummy.title = foo[1]
它说
无法分配“字符串??”类型的值键入“字符串?”
插入 ' 作为! 细绳'
foo
的返回类型是String?
和Dictionary
在使用下标时返回其值类型的可选,但什么是String??
输入 swift?
我认为进行这样的分配应该是合法的。 为什么它会抱怨,我应该如何做这个作业
由于字典foo
中的键 1 对应的值是可选的,并且字典中的值是String?
它返回类型String??
. 解开该值一次以检查该值是否存在将解决此问题
if let value = foo[1] {
dummy.title = value
}
通过将您的字典声明为[Int:String?]
您是说键是Int
并且值是可选的String
s。 现在键可能不存在于字典中,所以foo[1]
可选地返回一个可选的,你最终得到一个可选的可选 - String??
现在,虽然有时可以使用可选选项,但我认为在这种情况下这不是您想要的。
您可以简单地制作[Int:String]
的字典,然后如果值为nil
则不插入元素。
let foo: [Int: String] = [:]
dummy.title = foo[1]
如果您确实需要处理“此键有一个值并且它是nil
”的情况,那么 nil-coalescing 运算符可能会帮助您:
dummy.title = foo[1] ?? nil
甚至
dummy.title = foo[1] ?? ""
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.