如何在索引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

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

您应该以不同的方式进行

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

从数组中删除所有值。

最新更新