Swift Эквивалент removeObjectsInRange:
Имея немного проблем с отслеживанием эквивалента Swift:
//timeArray and locationArray are NSMutableArrays
NSRange removalRange = NSMakeRange(0, i);
[timeArray removeObjectsInRange:removalRange];
[locationArray removeObjectsInRange:removalRange];
Я вижу, что Swift имеет вызов в API: typealias NSRange = _NSRange
, но я не прошел мимо этой части. Любая помощь?
Ответы
Ответ 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)