Подтвердить что ты не робот

Swift Эквивалент removeObjectsInRange:

Имея немного проблем с отслеживанием эквивалента Swift:

//timeArray and locationArray are NSMutableArrays
NSRange removalRange = NSMakeRange(0, i);

[timeArray removeObjectsInRange:removalRange];
[locationArray removeObjectsInRange:removalRange];

Я вижу, что Swift имеет вызов в API: typealias NSRange = _NSRange, но я не прошел мимо этой части. Любая помощь?

4b9b3361

Ответ 1

В дополнение к ответу Антонио вы также можете просто использовать оператор диапазона:

var array = [0, 1, 2, 3, 4, 5]
array.removeRange(1..<3)
// array is now [0, 3, 4, 5]
  • Оператор полузамкнутого диапазона (1..<3) включает в себя 1, вплоть до 3 (так 1-2).
  • Оператор полного диапазона (1...3) включает в себя 3 (так 1-3).

Ответ 2

Используйте метод removeRange для быстрых массивов, для чего требуется, чтобы экземпляр структуры Range определял диапазон:

var array = [1, 2, 3, 4]

let range = Range(start: 0, end: 1)
array.removeRange(range)

Этот код удаляет все элементы массива из индекса 0 (включительно) до индекса 1 (не включительно)

Swift 3

Как было предложено @bitsand, вышеуказанный код устарел. Его можно заменить на:

let range = 0..<1
array.removeSubrange(range)

или, более кратко:

array.removeSubrange(0..<1)