2014-09-18 3 views
14

Имея небольшие проблемы отслеживания вниз Swift эквивалент:Swift Эквивалент removeObjectsInRange:

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

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

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

ответ

27

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

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).
+0

Что делает 1 .. <3 mean? (на английском языке) означает ли это от 1 до 1,2 или 3 в зависимости от того, как долго массив? – Jeef

+2

+1 это более компактная версия, рекомендуется, когда диапазон не используется повторно – Antonio

+1

@ Jeef: это объясняется в [Операторы диапазона] (https://developer.apple.com/library/ios/documentation/Swift/Conceptual/Swift_Programming_Language/ BasicOperators.html # // apple_ref/doc/uid/TP40014097-CH6-XID_126) - 1 .. <3 означает от 1 (включен) до 3 (не входит в комплект), тогда как 1 ... 3 включительно – Antonio

4

Используйте 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) 
+1

Для лучшего или худшего начала (начало: end :) устарело в Swift 3, а предупреждение, представленное Xcode, предполагает использовать вместо этого оператор «.. <». Некоторые могут пропустить немного более подробный, но более четкий стиль. – bitsand

Смежные вопросы