[英]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.