У меня возникли проблемы с поиском документации о том, как соответствовать MutableCollection
. Google полностью пуст по этой теме.Как соответствовать MutableCollection?
Пример, я хочу, чтобы добавить соответствие для GMSPath
/GMSMutablePath
:
import CoreLocation
import GoogleMaps
extension GMSPath: RandomAccessCollection {
public var startIndex: Int {
return 0
}
public var endIndex: Int {
return count
}
public func index(before i: Int) -> Int {
return i-1
}
public func index(after i: Int) -> Int {
return i+1
}
public subscript(position: Int) -> CLLocationCoordinate2D {
return coordinate(at: UInt(position))
}
}
extension GMSMutablePath: MutableCollection { // Error!
public override subscript(position: Int) -> CLLocationCoordinate2D {
get {
return coordinate(at: UInt(position))
}
set {
replaceCoordinate(at: UInt(position), with: newValue)
}
}
}
Error: Type 'GMSMutablePath' does not conform to a) 'MutableIndexable', b) 'MutableCollection'.
Документация для MutableCollection
состояний:
To add conformance to the MutableCollection protocol to your own custom collection, upgrade your type’s subscript to support both read and write access.
Я сделал это.
MutableCollection
наследует от MutableIndexable
, Документов с указанием:
In most cases, it’s best to ignore this protocol and use the MutableCollection protocol instead, because it has a more complete interface.
Hm?
Поскольку MutableCollection является подтипом MutableIndexable, вы должны соответствовать MutableIndexable для присвоения MutableCollection – Alexander
Любые подсказки, что точно реализовать? С реализацией по умолчанию и т. Д. Вы никогда не знаете, что вам нужно реализовать. И документы не совсем понятны. – tombardey
Реализации по умолчанию, перечисленные в документе, вам нужно порицать хотя бы все, кроме тех, – Alexander