错误:无法下标'具有类型'Int64'的索引的'Dictionary的值

时间:2016-09-04 09:48:32

标签: swift dictionary

var dict = Dictionary<Int64, ExternalInfo>()

为上述词典创建扩展名,如

extension Dictionary where Key: IntegerLiteralConvertible, Value: ExternalInfo {

    func contains(id: Int64) -> Bool {
        return self[id] != nil
        /* return self[3] != nil */ // No issue
    }

    mutating func remove(id: Int64) {
        removeValueForKey(id)
    }
}

它为这两个语句抛出了一些编译器级错误。需要做什么??

  

不能下标'索引值为'的字典   输入'Int64'

1 个答案:

答案 0 :(得分:1)

尝试使用SignedIntegerType代替IntegerLiteralConvertible,这是不同整数类型之间更好的通用协议:

extension Dictionary where Key: SignedIntegerType, Value: ExternalInfo {

    func contains(id: Int64) -> Bool {
        return self[Key(id)] != nil
    }

    mutating func remove(id: Int64) {
        removeValueForKey(Key(id))
    }
}