如何在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纯NSArray
types,它确实不能被转换为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()
删除数组中的所有值。