我有一个数组,例如
var arraybtnState: NSArray! = NSArray()
对于添加/删除对象,我将其投入到 NSMutableArray
...
(self.arraybtnState as! NSMutableArray).addObject(button.tag)
(self.arraybtnState as! NSMutableArray).removeObject(button.tag)
,但它给了我SIGABRT
错误:
无法投射'swift._swiftdeferrednsarray'(0x453E08)的价值为'nsmutablearray'
我已经尝试了NSMutableArray
,但是在下线中给了我错误
self.arraybtnState = self.strSubscribe?.componentsSeparatedByString(",")
问题是在array
您应该以不同的方式进行
var arraybtnState = [Int]()
arraybtnState.append(5)
arraybtnState.append(6)
arraybtnState.removeAtIndex(0)
当您像So
那样声明它时 var arraybtnState:NSArray! = NSArray()
您正在创建纯NSArray
类型,并且确实不能将其施放到NSMutableArray
update
您可以按以下方式处理它
let some = self.strSubscribe?.componentsSeparatedByString(",").map{
(var char) -> Int in
return char.toInt() ?? 0
}
arraybtnState += some
NSArray
是不变的。创建后,它将无法修改。
这是NSMutableArray
的目的,要修改。
var myArr = NSMutableArray()
myArr.addObject("hey")
您还可以使用快速键入数组:
var swiftArray = [String]()
swiftArray.append("hey")
编辑:
编译器正在进行一些棘手的事情。我认为Xcode 6.3/swift 1.2中有一个错误。
此代码应起作用:
让挤压:字符串?="一个,两个,三"令array =累积?.componentsSeparateDbyString(",")为nsarray
但是它抱怨
[string]?不转换为'nsarray'
建议在Swift,组件中分配Bysstring返回字符串阵列可选([String]?]
)。
如果是这样,您应该能够这样修复它:
让array =累积?.componentsSeparateParatedBystring(",")!作为nsarray
但是给出此错误:
错误:Postfix'!'的操作数应具有可选类型;类型为'[string]'
非常奇怪。
如果您在标题中查看,则组件的迅速定义是
是func componentsSeparatedByString(separator: String) -> [String]
很明显,组件分隔bystring()返回一个迅速的字符串阵列,而不是可选的。编译器对任何一种语法都抱怨。
此代码做工作:
let string1:String? = "One,Two,Three"
let array1 = string1?.componentsSeparatedByString(",")
let aMutableArray = (array1! as NSArray).mutableCopy()
as! NSMutableArray
那是您的解决方案。
请在选定的单元功能中写入。它自动删除单元格。当您选择单元格
时arryname.remove(indexpath.row)
NSArray
是不可变的。声明后无法修改。
创建NSMutableArray
,要修改。
删除索引的值
someMutableArray.removeAtIndex(2)
这将在索引2处删除值。
在数组的末端删除
someMutableArray.removeLast()
删除所有值
someMutableArray.removeAll()
从数组中删除所有值。