我一直试图在“struct”中声明一个静态字典。然而,我无法做到这一点。它给了我“类型'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>()
//    }
}

代码中的“BagItem”是我的另一个全局类。
声明此变量的正确和最佳方法是什么?
谢谢你的回答
致意

最佳答案

正如上面所说,问题是您的自定义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
}

关于ios - 快速静态字典类型变量声明?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26078418/

10-09 18:33