Swift词典是结构,而不是类,因此它们不能被子类化.理想情况下,您正在使用的方法将被声明为采用适当约束的通用CollectionType(或ExtensibleCollectionType,或SequenceType,具体取决于具体情况),而不是具体的Dictionary.
如果由于某种原因这对你不起作用,你可以改为继承NSDictionary.
(编辑)正如Antonio指出的那样,你可以做扩展词典{...}来向Dictionary结构添加东西,在某些情况下可以替换子类.
以下是一个符合 Collection 的结构,它委托给字典。可以很容易地根据任何需要进行修改。
public struct MyDictionary<Key: Hashable, Value: MyKindOfValue>: Collection {
public typealias DictionaryType = Dictionary<Key, Value>
private var dictionary: DictionaryType
//Collection: these are the access methods
public typealias IndexDistance = DictionaryType.IndexDistance
public typealias Indices = DictionaryType.Indices
public typealias Iterator = DictionaryType.Iterator
public typealias SubSequence = DictionaryType.SubSequence
public var startIndex: Index { return dictionary.startIndex }
public var endIndex: DictionaryType.Index { return dictionary.endIndex }
public subscript(position: Index) -> Iterator.Element { return dictionary[position] }
public subscript(bounds: Range<Index>) -> SubSequence { return dictionary[bounds] }
public var indices: Indices { return dictionary.indices }
public subscript(key: Key)->Value? {
get { return dictionary[key] }
set { dictionary[key] = newValue }
}
public func index(after i: Index) -> Index {
return dictionary.index(after: i)
}
//Sequence: iteration is implemented here
public func makeIterator() -> DictionaryIterator<Key, Value> {
return dictionary.makeIterator()
}
//IndexableBase
public typealias Index = DictionaryType.Index
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
4094 次 |
最近记录: |