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

时间:2015-05-12 12:26:18

标签: ios swift

我有一个像

这样的数组
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

中添加/删除对象的首选方法是什么

4 个答案:

答案 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()

从数组中删除所有值。