我在Swift中的字典中遇到了一個很大的問題。我有一些自定義類:團隊,競爭和統計。 團隊和比賽符合協議哈希和可衡量的。Swift dictionary does not working
字典看起來像這樣: [Team: [Competition: Statistics]]
。
此外我有兩個「總體價值」:團隊和競爭。
當我做到以下幾點: println(dictionary[overallTeam]!)
它打印出的競爭和統計數據,你會期望的內存地址。但是,當我執行以下操作時: println(dictionary[overallTeam]![overallCompetition])
我得到nil
作爲輸出。我完全想知道,因爲dictionary[overallTeam]!
中只有1個密鑰,它與overallCompetition
同名。這意味着等號==
返回true和hashValue是相同的。
請幫忙,哪裏會是這個問題。
下面的代碼:
在init()
方法我做到以下幾點:
dictionary = [Team: [Competition: Statistics]]()
dictionary[overallTeam] = [Competition: Statistics]()
dictionary[overallTeam]![overallCompetition] = Statistics()
打印的代碼是在啓動應用程序時調用的方法:
println(overallCompetition.name) //"overallCompetition"
println(overallCompetition.hashValue) //some hashCode, e.g. 5
for item in dictionary[overallTeam]!.keys { //executed once
println(item.name) //"overallCompetition"
println(item.hashValue) //SAME hashCode, e.g. 5
println(dictionary[overallTeam]![item]!.value) //prints the value expected
}
println(dictionary[overallTeam]) //prints some memory addresses
println(dictionary[overallTeam]![overallCompetition]) //nil
println(dictionary[overallTeam]![overallCompetition]!.value) //error: unexpectedly found nil
剛一個普遍的問題:字典鍵是基於hashValue的,不是嗎?然後爲什麼做兩個鍵與相同 hashValue不會產生相同結果???
請問您可以發佈設置和打印字典變量的代碼。 –
您的詞典將內部詞典定義爲具有統計密鑰,但內部詞典使用PlayerStatistics鍵進行初始化,然後將該值初始化爲統計對象...是統計PlayerStatistics的子類或是PlayerStatistics統計的子類,因爲你的代碼暗示着兩者都是彼此的子類。將內部字典的值類型更改爲統計信息並查看是否有效。 – ad121
哦,對不起,忘了改變它,改變了名字,以便它們在這裏不那麼久。 – borchero