swift中的静态字典类型变量声明?

时间:2014-09-27 19:35:41

标签: ios iphone swift

我一直在尝试在" struct"中声明一个静态字典。但是,我无法做到这一点。它给了我" Type' BagItem'不符合协议' Hashable'"

我的代码在这里:

struct StaticBag {

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

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

&#39; BagItem&#39;在代码中是我的另一个全局类。 声明此变量的最佳方式是什么?

感谢您的回答

祝你好运

1 个答案:

答案 0 :(得分:4)

正如它所说,问题是您的自定义BagItem类型不符合Hashable协议。字典键需要是可清除的,因为字典使用哈希值来快速查找条目。

BagItem看起来像什么?是否有可以清洗的独特属性?如果是这样,您可以通过添加Hashable属性并实施hashValue运算符来添加==一致性:

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

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