2013-09-04 2 views
-1

У меня есть NSArray, которые содержат п число NSDictionary sampleArray =Fetch NSArray от NSDictionary из NSArray с помощью objectForKey

(
      { 
      0 = 0; 
      1 = 0; 
     }, 
      { 
      0 = 86400; 
      1 = 2; 
     }, 
      { 
      0 = 172800; 
      1 = 4; 
     }, 
      { 
      0 = 259200; 
      1 = 5; 
     } 

    ) 

Теперь мне нужно принести NSArray для , мой результат NSArray должен быть как (0,86400,172800,259200), но я не могу получить результат, и приложение падает.

Обычно для NSDictionary, если значение ключа устанавливается с помощью NSStringvalueForKey вышеописанная операция выполняется успешно, но если значение ключа устанавливается с помощью объекта как NSNumber objectForKey Я не в состоянии выполнить эту операцию.

Пожалуйста, помогите мне найти решение, любое предложение будет оценено!

+2

'objectForKey:' это метод на 'NSDictionary', а не' NSArray' – Sebastian

+0

Да, я проверил Это. Есть ли какое-либо решение для получения моего приведенного выше результата? –

+0

ключ всегда является строкой .. но это не означает, что если вы замените его на строку, это будет работать в вашем случае. –

ответ

3

очень прямой путь, если ваши ключи NSNumber объекты:

NSMutableArray *result = [[NSMutableArray alloc] init]; 
for (NSDictionary *d in a) { 
    if (d[@0]) { 
     [result addObject:d[@0]]; 
    } 
} 
+0

@Sebastin Спасибо за все ваши ответы !! Думаю, это подходящее решение для моего вопроса. Мне интересно, почему NSArray обладает свойством для valueForKey и почему не для «objectForKey» !! –

+1

Как говорят документы: '' valueForKey: 'Возвращает массив, содержащий результаты вызова' valueForKey: 'используя ключ для каждого из объектов массива. Тем не менее, это работает только для строк. – Sebastian

+0

@Sebastian не знал, что ... хотя у меня обычно есть строковые ключи в любом случае. –

0

Что вы должны сделать, это

NSMutableArray *arrResult = [[NSMutableArray alloc]init]; 
for(int i=0;i<[sampleArray count];i++) 
    { 
    NSString *strValue = [[sampleArray objectAtIndex:i] valueforkey:@"0"]; 

    [ arrResult addobject:strValue]; 
} 

дайте мне знать, что она работает или нет !!!!

Счастливое кодирование !!!!!

+0

KVC ????? я об этом не знаю. можешь ли ты описать меня по этой теме? – NiravPatel

+0

Ключевое значение кодирования .. классный материал: http://www.itsaboutcode.com/blog/2011/11/30/what-is-key-value-coding-kvc-and-why-we-need-it/ –

3

ЭТО не работает - им жаль: я не вижу, что вы не имели строк в качестве ключей + я не знаю, КВЦ работает только со строками

Я оставляю это, хотя


то, что вы ищете

NSArray *zeros = [mainArray valueForKey:@"0"]; 

он получает "0" от каждого Dict в массиве

+0

Нет, это не работает! Я получаю результат как «», «», «». –

+0

Являются ли ваши ключи 'NSString' или' NSNumber' объектами? – Sebastian

+0

NSNumber .. Пожалуйста, проверьте мой образецArray, если это NSSting, это должно быть @ "0", но я упомянул как 0 –

0

здесь вы можете т чень NSArray * tempArray

for (NSDictionary *list in tempArray) 
{ 
    [firstArray addObject:[list objectForKey:@"0"]; 
    [secondArray addObject:[list objectForKey:@"1"]; 
} 
Смежные вопросы