Вот что я хочу сделать:Как хранить NSRange в NSMutableArray или другом контейнере?
NSRange r = NSMakeRange(0,5);
id a = [NSMutableArray a];
[a addObject: r]; // but NSRange is not a NSObject *
С булево, я хотел бы использовать такой код:
[a addObject: [NSNumber numberWithBool: YES]];
или целым числом:
[a addObject: [NSNumber numberWithInteger: 3]];
Так что это эквивалент с NSRange
? То, что я действительно не хочу делать, это создать мой собственный подкласс NSObject
, чтобы выполнить это. Конечно, есть способ, с помощью которого Apple уже предоставила?
Почему NSValue может хранить NSRange, но NSArray не мог? – antonio081014
Потому что 'NSArray' может хранить только объекты. 'NSRange' не является объектом, но вы можете его обернуть с помощью' NSValue', поэтому его можно использовать 'NSArray',' NSDictionary' и т. Д. –
при повторении через NSMutable массив, NSRange r = a [i] .rangeValue, дающий ошибку как значение свойства не найдено на идентификаторе типа ... –