Ne pas utiliser un NSSet.
Vous pouvez uniquement insérer des éléments lors de la création et ne pouvez pas modifier les éléments contenus après l'avoir créé.
Si vous voulez ajouter et supprimer des objets à la volée, vous pouvez utiliser un NSMutableSet.
Voici une démonstration de la façon de l'utiliser à la fois NSSet et NSMutableSet, puis la conversion NSSet retour à un NSArray (Incase vous voulez faire):
- (void) NSMutableSetPrintTest
{
NSMutableSet *mutableSet = [[NSMutableSet alloc] init];
NSLog(@"Adding 5 objects (3 are duplicates) to NSMutableSet");
NSString *firstString = @"Hello World";
[mutableSet addObject:firstString];
[mutableSet addObject:@"Hello World"];
[mutableSet addObject:@"Goodbye World"];
[mutableSet addObject:@"Goodbye World"];
[mutableSet addObject:@"Goodbye World"];
NSLog(@"NSMutableSet now contains %d objects:", [mutableSet count]);
int j = 0;
for (NSString *string in mutableSet) {
NSLog(@"%d: %@ <%p>", j, string, string);
j++;
}
NSLog(@"Now, if we are done adding and removing things (and only want to check what is in the Set) we should convert to an NSSet for increased performance.");
NSSet *immutableSet = [NSSet setWithSet:mutableSet];
NSLog(@"NSSet now contains %d objects:", [immutableSet count]);
int i = 0;
for (NSString *string in immutableSet) {
NSLog(@"%d: %@ <%p>", i, string, string);
i++;
}
[mutableSet release]; mutableSet = nil;
NSLog(@"Now, if we are done with the sets, we can convert them back to an NSArray:");
NSArray *array = [immutableSet allObjects];
NSLog(@"NSArray contains %d objects", [array count]);
int k = 0;
for (NSString *string in array) {
NSLog(@"%d: %@ <%p>", k, string, string);
k++;
}
}
ok super, je reçois des valeurs uniques dans mutableSet, que comment copier des éléments de ce mutableSet à un autre tableau, disons tableau b ??? – iscavengers
Mon code vous montre comment faire ceci: 'NSArray * b = [mutableSet copy];' PS: Si ma réponse vous a aidé, vous pouvez le marquer comme correct. À votre santé. –
Come on - "Comment copier des éléments de set à array ??". ** Regardez la documentation de NSSet. ** Il a probablement fallu plus de temps pour écrire ce commentaire que pour double-cliquer sur NSSet et faire défiler jusqu'à la liste des méthodes pour voir 'allObjects'. – bbum