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")
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.