Voici ce que je veux faire:
NSRange r = NSMakeRange(0,5);
id a = [NSMutableArray a];
[a addObject: r]; // but NSRange is not a NSObject *
Avec un booléen, j'utiliserais du code comme ceci:
[a addObject: [NSNumber numberWithBool: YES]];
ou avec un entier:
[a addObject: [NSNumber numberWithInteger: 3]];
Alors, quel est l'équivalent avec un NSRange
? Ce que je ne veux pas vraiment faire, c'est créer ma propre sous-classe de NSObject
pour y parvenir. Il y a sûrement un moyen avec ce qu'Apple a déjà fourni?
tilisez +valueWithRange:
De NSValue . Pour récupérer la structure de la plage, utilisez la propriété rangeValue
.
[a addObject:[NSValue valueWithRange:r]];
...
NSRange r = a[4].rangeValue;
[NSValue valueWithRange:r];
et sortez-le avec:
NSRange r = [rangeObject rangeValue];
Si vous devez stocker le NSRange
dans une liste de propriétés, vous pouvez également transformer un NSRange
en NSString
à l'aide de la fonction NSStringFromRange
. Et puis, vous pouvez reconvertir cette chaîne en une plage à l'aide de la fonction NSRangeFromString
.
Une autre option pourrait être d'ajouter ces plages dans un NSIndexSet
, selon la façon dont vous comptez les utiliser ensuite.