var testarray = NSArray()
testarray = [1,2,2,3,4,5,3]
print(testarray)
testarray.removeObject(2)
我想从多个匹配对象中删除单个对象,如
myArray = [1,2,2,3,4,3]
当我删除
myArray.removeObject(2)
然后删除两个对象。我想只删除单个对象。
我尝试使用多个扩展但没有人正常工作。我已经使用过this link。
答案 0 :(得分:7)
Swift 2
使用简单的Swift数组时的解决方案:
var myArray = [1, 2, 2, 3, 4, 3]
if let index = myArray.indexOf(2) {
myArray.removeAtIndex(index)
}
它有效,因为.indexOf
仅返回找到的对象的第一次出现,作为可选项(如果找不到对象,它将为nil
。)
如果您正在使用NSMutableArray,那么它的工作方式会有所不同:
let nsarr = NSMutableArray(array: [1, 2, 2, 3, 4, 3])
let index = nsarr.indexOfObject(2)
if index < Int.max {
nsarr.removeObjectAtIndex(index)
}
如果未能在此索引处找到对象,.indexOfObject
将返回Int.max
,因此我们会在删除对象之前检查此特定错误。
Swift 3
语法已经改变,但想法是一样的。
阵列:
var myArray = [1, 2, 2, 3, 4, 3]
if let index = myArray.index(of: 2) {
myArray.remove(at: index)
}
myArray // [1, 2, 3, 4, 3]
的NSMutableArray:
let myArray = NSMutableArray(array: [1, 2, 2, 3, 4, 3])
let index = myArray.index(of: 2)
if index < Int.max {
myArray.removeObject(at: index)
}
myArray // [1, 2, 3, 4, 3]
在Swift 3中,我们在Array和NSMutableArray上调用index(of:)
,但它们对于不同的集合类型仍然表现不同,例如indexOf
和indexOfObject
在Swift 2中的行为。
答案 1 :(得分:-1)
如果要删除所有重复的对象,则可以使用以下代码。
var testarray = NSArray()
testarray = [1,2,2,3,4,5,3]
let set = NSSet(array: testarray as [AnyObject])
print(set.allObjects)