2014-09-27 65 views
0

我一直在試圖在「struct」中聲明一個靜態字典。但是,我無法做到這一點。它給我「類型'BagItem'不符合協議'Hashable'」Swift中的靜態字典類型變量聲明?

我的代碼是在這裏:在代碼

struct StaticBag { 

    static var bag: Dictionary<BagItem, Array<BagItem>> = Dictionary<BagItem, Array<BagItem>>() 

// static func AddMainItem(item: BagItem) 
// { 
//  self.bag[item] = Array<BagItem>() 
// } 
} 

'BagItem' 是我的另一個世界級的。 聲明這個變量的正確和最好的方法是什麼?

謝謝你的答案

問候

回答

4

,因爲它說,這個問題是您的自定義BagItem類型不符合Hashable協議。字典鍵需要可散列,因爲字典使用散列值快速查找條目。

BagItem是什麼樣子的?有沒有一個獨特的屬性已經可以清除?如果是這樣,你可以通過添加hashValue財產和實施==操作添加Hashable一致性:

class BagItem : Hashable { 
    var uniqueID: Int = 0 
    var hashValue: Int { return uniqueID.hashValue } 
} 

func ==(lhs: BagItem, rhs: BagItem) -> Bool { 
    return lhs.uniqueID == rhs.uniqueID 
} 
+0

謝謝你很多:)這是工作:) @NateCook – user2174358 2014-09-27 19:53:13