如何在swift索引处添加/删除对象

我有一个数组像

var arraybtnState: NSArray! = NSArray() 

对于添加/删除对象到数组中,我已经将其转换为NSMutableArray

 (self.arraybtnState as! NSMutableArray).addObject(button.tag) (self.arraybtnState as! NSMutableArray).removeObject(button.tag) 

但它给我SIGABRT错误:

无法将types“Swift._SwiftDeferredNSArray”(0x453e08)的值转换为“NSMutableArray”

我已经尝试NSMutableArray但它给了我下面的错误

 self.arraybtnState = self.strSubscribe?.componentsSeparatedByString(",") 

问题是在array添加/删除对象的首选方法是什么

你应该以不同的方式做

 var arraybtnState = [Int]() arraybtnState.append(5) arraybtnState.append(6) arraybtnState.removeAtIndex(0) 

当你这样宣布的时候

  var arraybtnState:NSArray! = NSArray() 

你正在创build纯NSArraytypes,它确实不能被转换为NSMutableArray

UPDATE

你可以如下处理它

 let some = self.strSubscribe?.componentsSeparatedByString(",").map{ (var char) -> Int in return char.toInt() ?? 0 } arraybtnState += some 

一个NSArray是不可变的。 一旦创build,它就不能被修改。

这是NSMutableArray的目的,是可以修改的。

 var myArr = NSMutableArray() myArr.addObject("hey") 

你也可以使用Swifttypes的数组:

 var swiftArray = [String]() swiftArray.append("hey") 

编辑:

编译器有一些棘手的问题。 我认为在Xcode 6.3 / Swift 1.2中有一个bug。

这个代码应该工作:

让aString:String? =“One,Two,Three”let array = aString?.componentsSeparatedByString(“,”)as NSArray

但它抱怨

[串]? 不能转换成'NSArray'

build议在Swift中,componentsSeparatedByString返回一个string数组optional( [String]?] )。

如果是这样的话,你应该可以像这样修复它:

让array = aString?.componentsSeparatedByString(“,”)! 作为NSArray

但是,这给了这个错误:

错误:后缀'!'的操作数 应该有可选的types; types是'[String]'

很奇怪。

如果你查看头文件,componentsSeparatedByString()的Swift定义是

 func componentsSeparatedByString(separator: String) -> [String] 

很明显,componentsSeparatedByString()返回一个Swiftstring数组,而不是可选的。 编译器会抱怨两种语法。

这段代码确实有效:

 let string1:String? = "One,Two,Three" let array1 = string1?.componentsSeparatedByString(",") let aMutableArray = (array1! as NSArray).mutableCopy() as! NSMutableArray 

这是你的解决scheme。

请在选定的单元格function中写入。 它是自动删除单元格。 当你select单元格时

arryName.remove(indexPath.row)

NSArray是不可变的。 申报后不能修改。

创buildNSMutableArray ,可修改。

删除索引值

 someMutableArray.removeAtIndex(2) 

这将删除索引2处的值。

在数组结束时删除

 someMutableArray.removeLast() 

删除所有值

 someMutableArray.removeAll() 

删除数组中的所有值。