Это ошибка. Это связано с тем, что инициализатор IndexSet
не является неисправным. Здесь - инициализатор, определенный в стандартной библиотеке:
/// Initialize an `IndexSet` with a single integer.
public init(integer: Element) {
_handle = _MutablePairHandle(NSIndexSet(index: integer), copying: false)
}
Использование целых чисел без знака должно было быть способом, чтобы соответствовать определению:
Диапазон допустимых целочисленных значений: 0..<INT_MAX-1
. Что-нибудь снаружи
этот диапазон является ошибкой.
Вы можете иметь это расширение для безопасности:
extension IndexSet {
public init(unsignedInt: UInt) {
self = IndexSet(integer: Int(unsignedInt))
}
}
Поэтому, когда вы попытаетесь инициализировать IndexSet с отрицательным целым числом, он выдаст вам правильное сообщение об ошибке:
IndexSet(unsignedInt: -1) //Negative integer '-1' overflows when stored into unsigned type 'UInt'