我有一个像
这样的数组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
答案 0 :(得分:3)
你应该以不同的方式做到这一点
var arraybtnState = [Int]()
arraybtnState.append(5)
arraybtnState.append(6)
arraybtnState.removeAtIndex(0)
虽然你这样宣布
var arraybtnState:NSArray! = NSArray()
您正在创建纯NSArray
类型,但确实无法投放到NSMutableArray
<强>更新强>
您可以按照以下方式处理
let some = self.strSubscribe?.componentsSeparatedByString(",").map{
(var char) -> Int in
return char.toInt() ?? 0
}
arraybtnState += some
答案 1 :(得分:3)
NSArray
是不可变的。一旦创建,就无法修改。
这是NSMutableArray
的目的,可以修改。
var myArr = NSMutableArray()
myArr.addObject("hey")
您还可以使用Swift类型数组:
var swiftArray = [String]()
swiftArray.append("hey")
编译器发生了一些棘手的问题。我认为Xcode 6.3 / Swift 1.2中存在一个错误。
此代码应该有效:
让aString:String? =“一,二,三” 让array = aString?.componentsSeparatedByString(“,”)作为NSArray
但它抱怨
[字符串]?不可转换为'NSArray'
建议在Swift中,componentsSeparatedByString返回一个字符串数组可选([String]?]
)。
如果是这种情况,您应该可以像这样修复它:
let array = aString?.componentsSeparatedByString(“,”)!作为NSArray
但 会出现此错误:
错误:后缀'!'的操作数应该有可选的类型; type是'[String]'
很奇怪。
如果查看标题,则组件的SeparatedByString()的Swift定义是
func componentsSeparatedByString(separator: String) -> [String]
很明显,componentsSeparatedByString()返回一个Swift String数组,而不是一个可选的。编译器抱怨任何一种语法。
此代码 工作:
let string1:String? = "One,Two,Three"
let array1 = string1?.componentsSeparatedByString(",")
let aMutableArray = (array1! as NSArray).mutableCopy()
as! NSMutableArray
这是你的解决方案。
答案 2 :(得分:1)
请写入选定的单元格功能。它是自动删除单元格。当你选择单元格
arryName.remove(indexPath.row)
答案 3 :(得分:-1)
NSArray
是不可变的。声明后无法修改。
创建NSMutableArray
,可以修改。
删除索引值
someMutableArray.removeAtIndex(2)
这将删除索引2处的值。
在数组末尾删除
someMutableArray.removeLast()
删除所有值
someMutableArray.removeAll()
从数组中删除所有值。