簡體   English   中英

無法將String類型的值分配為AnyObject類型? 斯威夫特3.0

[英]Cannot assign value of type String to type AnyObject? Swift 3.0

我突然收到以下錯誤的字典類型:

var parameters = [String: AnyObject]()

然后,如果我嘗試:

parameters["cancelled_by"] = someUser ?? ""

我得到的錯誤為:

無法將String類型的值分配為AnyObject類型?

這是針對Swift 3.0 我在這里做錯了什么? 為什么不起作用?

String值類型 AnyObject僅接受引用類型 因此,為了在Dictionary添加值類型和引用類型,請使用Any而不是AnyObject ,即

var parameters = [String: Any]()

這是Swift 3.0的新增功能。

我現在從Swift 3開始,有點晚了……但是,直到Swift 2.2某些Swift值類型自動橋接到相應的基礎引用類型,例如StringNSStringDictionary<>NSDictionary等等。 。 看來此自動橋接已在Swift 3中刪除。

在某些情況下,將[String : AnyObject]轉換為[String : Any]是有意義的,在其他情況下則沒有意義,這取決於您在做什么。 在我當前的情況下,不需要引用類型。

所以我通過請求顯式橋接,強制轉換為AnyObject來解決此問題:

var dictionary: [String : AnyObject] = [:]
dictionary["valueType"] = "Value Type" // Error
dictionary["referenceType"] = "Reference Type" as AnyObject // OK

以供參考:

let text = "Text"
let asAny = text as Any
let asAnyObject = text as AnyObject
let asNSString: NSString = text as NSString

type(of: text) // Prints String.Type
type(of: asAny) // Prints String.Type
type(of: asAnyObject) // Prints _NSContiguousString.Type
type(of: asNSString) // Prints _NSContiguousString.Type

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM