2016-11-01 26 views
0

我遇到的問題與創建斯威夫特一個多層次的字典和遵循一些這裏給出的建議:語境型「AnyObject」不能用字典字面多級字典使用

var userDict:[String:AnyObject]? = ["SystemId": "TestCompany", 
            "UserDetails" : ["firstName": userDetail.name, "userAddress" : "addressLine1" userDetail.userAdd1]] 

[String:AnyObject]?的使用適用於Dict的第一級,但Swift在下一級Dict UserDetail[]處也會出現相同的錯誤。任何建議,將不勝感激

+1

使用'Any'而不是'AnyObject' –

+0

爲什麼你註釋一個明確的非可選字典是可選的? – vadian

回答

0

我不是很確定哪些類型的userDetail.nameuserDetail.userAdd1但如果是字符串,你應該讓它[String:String]?

然而,[String:Any]?應該解決您的問題。如果你相信,你想讓它[String:AnyObject]?(我不認爲你願意的話),你可以做這樣的事情:

var userDict:[String:AnyObject]? = ["SystemId": "TestCompany" as AnyObject, 
              "UserDetails" : ["firstName": userDetail.name, "userAddress" : userDetail.userAdd1] as AnyObject] 

希望這有助於。

+0

謝謝艾哈邁德,回答:用戶數據被定義爲可選的字符串。在你的解決方案中,Swift仍然存在一個問題,就是將「userDetails」Dict定義爲AnyObject(正如你所建議的),聲明「上下文類型'AnyObject'不能與字典文字一起使用」。 – Liedl

+0

by what?:)就是答案-hopfully-幫助 –

+0

我解決了這個通過創建單獨的字典,設置的內容,然後添加不同的字典到主字典: VAR的UserDict:[字符串:AnyObject] = [:] \t的UserDict [ 「systemID與」] =「 TestCompany」 VAR爲userDetails:[字符串:字符串] = [:] 爲userDetails = [ 「名字」:userDetail.name, 「userAddress」:userDetail.userAdd1] UserDict中[ 「爲userDetails」] =爲userDetails如AnyObject? – Liedl