Objectif C littéraux pour NSSet et NSOrderedSet?
Ce qui, le cas échéant, NSSet et NSOrderedSet opérations peut-on effectuer avec le nouvel Objectif-C collection littéraux?
Pour NSArray, NSDictionary, et NSNumber, voir ici.
FWIW, ce Big Nerd Ranch Post dit l'indexation de la syntaxe est censé travailler pour NSOrderedSet. Mais dans mes tests, il ne le fait pas. Et je n'ai pas été en mesure de trouver quelque chose sur la création d'ensembles ordonnés.
Vous devez vous connecter pour publier un commentaire.
Il n'y a pas d'Objectif-C, la syntaxe littérale pour NSSet. Il n'a pas vraiment le sens de l'utilisation de l'indice de subscripting pour accéder à NSSet éléments, bien que basés sur une clé subscripting pourrait. Soit par l'emballage ou sous-classement, vous pourrait ajouter votre propre.
(Correction):
A l'origine, j'avais pensé NSOrderedSet n'était pas pris en charge, soit, mais il s'avère que l'utilisation de l'indice de subscripting est pris en charge, mais il ne semble pas être un moyen d'initialiser une NSOrderedSet avec la syntaxe littérale. Toutefois, vous pouvez utiliser initWithArray: passer un littéral de tableau:
Sorties:
Selon cet excellent post par Mike Ash, vous pouvez ajouter les méthodes qui sont utilisées à l'appui indexé subscripting à vos propres objets.
Et des méthodes similaires pour objet les incrustations:
Ainsi, vous pouvez mettre en œuvre un wrapper (ou avec un peu plus de travail, la sous-classe) autour d'un NSSet et de fournir des clés basé sur la récupération. Cool!
NSSet *aset = [NSSet setWithArray:@[@"a", @"b", @"c", @"d", @42]];
Ce que d'essayer cela, en cas de NSSet:
Et de l'utiliser comme ceci:
😉
[NSSet setWithArray:@[__VA_ARGS__]]
de sorte que ce sera un échec quand il y a unnil
élément au lieu d'en silence l'arrêt précoce$(...)
littérale, il suffit d'utiliser:#define set() [NSSet setWithArray:@[__VA_ARGS__]]