gpt4 book ai didi

xcode - NSRange 变量可以包含多个范围吗?

转载 作者:搜寻专家 更新时间:2023-11-01 05:54:24 25 4
gpt4 key购买 nike

NSRange 变量是否可能包含多个范围?像这样的东西:

 var multipleRanges: NSRange = [NSMakeRange(0, 2), NSMakeRange(10, 1), ...]

或者也许还有另一种用于多个范围的变量类型?

最佳答案

Or maybe there is another varaible type for multiple ranges?

是的,NS(Mutable)IndexSet 将(唯一的)无符号整数的集合存储为一系列范围。

示例:创建可变索引集并添加两个范围和一个索引:

let indexSet = NSMutableIndexSet()
indexSet.addIndexesInRange(NSMakeRange(0, 2))
indexSet.addIndexesInRange(NSMakeRange(10, 3))
indexSet.addIndex(5)
println(indexSet)
// <NSMutableIndexSet: 0x10050a510>[number of indexes: 6 (in 3 ranges), indexes: (0-1 5 10-12)]

枚举所有索引:

indexSet.enumerateIndexesUsingBlock { (index, stop) -> Void in
println(index)
}
// Output: 0 1 5 10 11 12

枚举所有范围:

indexSet.enumerateRangesUsingBlock { (range, stop) -> Void in
println(range)
}
// Output: (0,2) (5,1) (10,3)

测试成员(member)资格:

if indexSet.containsIndex(11) {
// ...
}

但请注意,NSIndexSet 表示一个集合,即没有重复的元素,元素的顺序无关紧要。这可能会也可能不会根据您的需要有用。示例:

let indexSet = NSMutableIndexSet()
indexSet.addIndexesInRange(NSMakeRange(0, 4))
indexSet.addIndexesInRange(NSMakeRange(2, 4))
indexSet.enumerateRangesUsingBlock { (range, stop) -> Void in
println(range)
}
// Output: (0,6)

关于xcode - NSRange 变量可以包含多个范围吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26588329/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com