2016-08-30 39 views
3

我試圖建立一個簡單的字典中迅速:語境型「AnyObject」不能用字典文字使用 - 數據結構不一致

var dict = [ 
    "_id": "123", 
    "profile": [ 
    "name": "me", 
    "username": nil, 
    ] 
] as [String : Any] 

但是失敗與Contextual type 'AnyObject' cannot be used with dictionary literal。繼this question,我試圖通過[String : [String : Any]]更換[String : Any],但邏輯上失敗了,因爲第一個值是String型的,而不是[String : Any]

我只是想有一些持有任何類型的數據,我可以代表一個JSON和我很好具有嘗試訪問它們後來當看守鑄造的東西。

回答

5

斯威夫特是一個嚴格的類型語言,所以問題是,當你添加nil字典,它將不能夠知道什麼類型的將是如此,它會抱怨說該類型是曖昧。

您可以通過執行以下操作指定詞典的鍵和值的類型:

let profile: [String: AnyObject?] = ["name": "me", "username": nil]  
let dict = ["_id": "123", "profile": profile] as [String : Any] 

或者,您可以使用init(dictionaryLiteral:)構造函數來創建字典:

let dict = [ 
    "_id": "123", 
    "profile": Dictionary<String, AnyObject?>(dictionaryLiteral: ("name", "me"), ("username", nil)) 
] as [String : Any] 
+0

我明白了。仍然很奇怪,事情會變得混亂。無論如何,如果我按照你的回答,我然後'JSONSerialization.isValidJSONObject(dict)'爲'false'。對發生什麼事有任何想法? Json沒有任何接近嚴格類型的問題,所以我會除了這樣做以外。 – Guig

+0

@Guig這是一個與上面的問題無關的問題。你可以問一個關於SO的單獨問題嗎? – ozgur

+0

當然可以。那就是:http://stackoverflow.com/questions/39221541/swift-dictionary-with-nil-value-to-json – Guig

相關問題