2012-03-22 2 views
1

для приложения iOS 5.0 с использованием ARC, у меня есть NSArray объектов, которые содержат NSArray других объектов внутри него. Возможно ли извлечь список объектов из внутренних массивов без итерации через массив, например. скажем, с помощью NSpredicate или valueForKeyPath. Чтобы быть более ясным, у меня есть:Получение объектов из NSArray в рамках другого NSArray

NSArray *objtype1 contains 
     -id 
     -NSArray *imageObjs containing imageObjects 
         -imagetype = 1 <--1st imageObject 
         imageURL1 
         -imagetype = 2 <--2nd imageObject 
         imageURL2 
     -NSArray *objtype2 
     -other parameters 

Мне нужно извлечь из NSArray IMAGETYPE = 1 imageObjects перейти в для дальнейшей обработки. Это возможно? (Я смотрю на NSpredicate и valueForKeyPath, но ничего не нашел)

+0

Похоже, что вместо родительского массива вы действительно хотите создать класс со свойствами id, nsarray, nsarray и другими параметрами. – sosborn

+0

Я согласен с @sosborn. Когда у вас есть структура данных, которая не легко вписывается в классы NS, просто создавайте свои собственные. Дайте ему приятный чистый интерфейс, и тогда вы не будете мешать коду по всему магазину для доступа к свойствам этого. –

ответ

1

Я думаю, причина, по которой вы еще ничего не нашли, потому что ее там нет. Вы можете реализовать свою собственную категорию в NSArray, чтобы использовать предикаты рекурсивно. Возможно, кто-то еще это сделал. Я не знаю.

1

Ummmmm Кажется немного неясным, что вы делаете. Похоже, у вас есть NSArray нескольких типов. И вы хотите, чтобы в нем находился массив imageObjs.

Если у вас есть такой NSArray, было бы гораздо проще преобразовать его в NSDictionary. Затем вы можете использовать [dictionary valueForKey:@"Image Array"];, чтобы получить из него массив изображений.

В настоящее время решение для получения массива imageObjs будет [objtype1 objectAtIndex:1];, а затем перебрать этот массив, чтобы использовать объекты imageObjects в нем.

for(ImageObject *obj in arr) { 
    //do stuff 
} 
+1

ummmm, downvote, почему? – ColdLogic

Смежные вопросы