Question

On dirait qu'il devrait être facile d'ajouter un booléen à un NSMutableArray.

Supposons toDoArray est intialized comme NSMutableArray. Ce qui suit:

BOOL checkBoxState = NO;
[toDoArray addObject:checkBoxState]; 

Génère l'erreur "tentative d'insertion nulle".

Quelle est la bonne façon d'ajouter un booléen négatif à un tableau mutable?

Était-ce utile?

La solution

matrices NSMutable nécessitent un identifiant, une partie de l'objectif bizarre C. Un identifiant est un objet, mais pas une primitive (par exemple, ints sont des primitives, tandis que NSArrays sont des objets, et en extension, ids).

Cette question pourrait aider.

Autres conseils

Comme d'autres l'ont dit, NSMutableArray ne peut contenir que des objets Objective-C. Ils ne doivent pas être sous-classes de NSObject, mais qui est le plus typique.

Cependant, bien avant que vous voyez jamais l'erreur d'exécution attempt to insert nil., vous auriez dû voir un avertissement du compilateur:

warning: passing argument 1 of 'addObject:' makes pointer from integer without a cast

Il est [d'une manière vague et rond-point] vous dire exactement quel est le problème; vous essayez de coller quelque chose dans un tableau qui n'est pas un pointeur [à un objet].

Faites attention aux avertissements et les corriger. La plupart du temps, la présence d'un avertissement indique une erreur d'exécution ou de collision.

Vous avez besoin en utilisant NSNumber pour envelopper tous les types primitifs (BOOL, int, NSInterger, etc.) avant de le placer à l'intérieur objet de collection (NSArray, NSDictionary, etc.).

Ajouter BOOL tableau:

BOOL checkBoxState = NO;
NSNumber* n = [NSNumber numberWithBool:checkBoxState];
[toDoArray addObject:n];

Obtenir BOOL de tableau:

NSNumber* n = [toDoArray objectAtIndex:0];
BOOL checkBoxState = [n boolValue];
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top