Swift中等同于removeObjectsInRange:的方法

14

我有些困难,找到Swift语言等价于以下代码的写法:

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

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

我发现Swift在API中确实有一个调用:typealias NSRange = _NSRange,但是我还没有解决这个问题。需要帮助吗?

我看到Swift的API中有一个调用:typealias NSRange = _NSRange,但是我还没有理解透彻。需要帮助吗?

2个回答

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)。

1..<3 是什么意思?它是否意味着根据数组的长度,从1到1、2或3? - Jeef
2
+1 这是更紧凑的版本,当范围不被重复使用时推荐使用。 - Antonio
1
@Jeef:在范围运算符中有解释- 1..<3表示从1(包括)到3(不包括),而1...3是包括的。 - Antonio
@Jeef 扩展回答。另请参阅Swift范围运算符 - Aaron Brager

4
使用 Swift 数组的 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
无论好坏,init(start: end:)在Swift 3中已被弃用,Xcode提供的警告建议使用'..<'运算符代替。有些人可能会错过稍微冗长但更清晰的风格。 - bitsand

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接