Comment append / supprimer un object à l'index swift

J'ai un tableau comme

var arraybtnState: NSArray! = NSArray() 

Pour append / supprimer un object dans un tableau, je l'ai converti en NSMutableArray

 (self.arraybtnState as! NSMutableArray).addObject(button.tag) (self.arraybtnState as! NSMutableArray).removeObject(button.tag) 

Mais ça me donne l'erreur SIGABRT :

Impossible de convertir la valeur de type 'Swift._SwiftDeferredNSArray' (0x453e08) en 'NSMutableArray'

J'ai déjà essayé NSMutableArray mais il me donne l'erreur dans la ligne ci-dessous

 self.arraybtnState = self.strSubscribe?.componentsSeparatedBySsortingng(",") 

La question est de savoir comment append / supprimer un object dans un array

Vous devriez le faire d'une manière différente

 var arraybtnState = [Int]() arraybtnState.append(5) arraybtnState.append(6) arraybtnState.removeAtIndex(0) 

Pendant que vous le déclarez comme si

  var arraybtnState:NSArray! = NSArray() 

vous créez un type NSArray pur et il ne peut en effet pas être converti en NSMutableArray

METTRE À JOUR

Vous pouvez traiter avec comme suit

 let some = self.strSubscribe?.componentsSeparatedBySsortingng(",").map{ (var char) -> Int in return char.toInt() ?? 0 } arraybtnState += some 

Un NSArray est immuable. Une fois créé, il ne peut pas être modifié.

C'est le but de NSMutableArray , d'être modifiable.

 var myArr = NSMutableArray() myArr.addObject("hey") 

Vous pouvez également utiliser un tableau typé Swift:

 var swiftArray = [Ssortingng]() swiftArray.append("hey") 

MODIFIER:

Il y a quelque chose qui cloche avec le compilateur. Je pense qu'il y a un bug dans Xcode 6.3 / Swift 1.2.

Ce code devrait fonctionner:

let aSsortingng: Chaîne? = "Un, Deux, Trois" let array = aSsortingng? .componentsSeparatedBySsortingng (",") comme NSArray

Mais il se plaint

[Chaîne]? n'est pas convertible en 'NSArray'

Suggérant que dans Swift, componentsSeparatedBySsortingng renvoie un tableau de strings optionnel ( [Ssortingng]?] ).

Si c'était le cas, vous devriez pouvoir le réparer comme ceci:

let array = aSsortingng? .componentsSeparatedBySsortingng (",")! comme NSArray

Mais cela donne cette erreur:

erreur: opérande de postfix '!' devrait avoir un type optionnel; le type est '[Ssortingng]'

Très étrange.

Si vous regardez dans les en-têtes, la définition Swift de componentsSeparatedBySsortingng () est

 func componentsSeparatedBySsortingng(separator: Ssortingng) -> [Ssortingng] 

Il est assez clair que componentsSeparatedBySsortingng () returnne un tableau Swift Ssortingng, pas un optionnel. Le compilateur se plaint de l'une ou l'autre syntaxe.

Ce code fonctionne:

 let ssortingng1:Ssortingng? = "One,Two,Three" let array1 = ssortingng1?.componentsSeparatedBySsortingng(",") let aMutableArray = (array1! as NSArray).mutableCopy() as! NSMutableArray 

C'est ta solution.

S'il vous plaît écrire dans la fonction cellulaire sélectionnée. il est automatiquement supprimer la cellule. lorsque vous select la cellule

arryName.remove (indexPath.row)

NSArray est immuable. Il ne peut pas être modifié après la déclaration.

Créez NSMutableArray , pour être modifiable.

Supprimer la valeur à l'index

 someMutableArray.removeAtIndex(2) 

Cela supprimera la valeur à l'index 2.

Supprimer à la fin du tableau

 someMutableArray.removeLast() 

Supprimer toutes les valeurs

 someMutableArray.removeAll() 

Supprime toutes les valeurs du tableau.