2013-09-05 4 views
-3

У меня есть NSArray из NSDictionaries Мне нужно извлечь 2 значения или удалить значения, которые мне не нужны из словаря в приведенном ниже примере. Мне нужно удалить id и NumberValue. любой из вас знает, как я могу это сделать?Как удалить элементы NSDictionary

Array: (
     { 
      customerUS= { 
       DisplayName = "level"; 
       InternalName = "Number 2"; 
       NumberValue = 1; 
       id = xwrf 
      }, 
      customerCAN= { 
       DisplayName = "PurchaseAmount"; 
       InternalName = "Number 1"; 
       NumberValue = 3500; 
       id = adf; 
      }; 
     } 
    ) 

Я по-настоящему благодарю вашу помощь.

+0

ОК В первую очередь, вы изучили, как этот JSON относится к объектам, используемым для его хранения в памяти ('NSArray',' NSDictionary')?Как только вы узнаете, что посмотрели ссылку на класс и искали свою проблему? Вы, кажется, не хотите учиться, вы просто хотите, чтобы кто-то работал над вами. – trojanfoe

ответ

1

Я бы посоветовал вам прочитать документы Apple.

Для изменения любого объекта коллекции после его создания вам потребуется измененная версия. Для NSDictionary у нас есть NSMutableDictionary. Прочитано here.

У нас есть метод для удаления объектов:

- (void)removeObjectForKey:(id)aKey 

Существуют и другие методы, как хорошо. Вы можете легко ссылаться на них в вышеупомянутой документации.

1

Первое, Вы можете не удалить/вставки/обновления значение в (неизменное)NSDictionary/NSArray вам нужно конвертировать NSDictionary/NSArray в (изменяемые)NSMutableDictionary/NSMutableArray.

, такие как

NSArray *myArr = ....;  
NSMutableArray *newMutableArr = [myArr mutableCopy]; 

Затем вы можете изменить в newMutableArr.

Такие как

for(int i = 0 ; i < newMutableArr.count ; i ++) 
{ 
    [[newMutableArr objectAtIndex:i] removeObjectForKey:@"id"]; 
    [[newMutableArr objectAtIndex:i] removeObjectForKey:@"NumberValue"]; 
} 

Редакция:

без использования for loop и removeObjectForKey, если у вас есть массив словаря и как изменчивы, то вы можете также удалить ключ и его объект со всех элементы такого массива:

[newMutableArr makeObjectsPerformSelector:@selector(removeObjectForKey:) withObject:@"id"]; 
[newMutableArr makeObjectsPerformSelector:@selector(removeObjectForKey:) withObject:@"NumberValue"]; 
+0

Нет никакого способа сделать это программно? – HelenaM

+0

@HelenaM - что ты имеешь в виду? «Нет никакого способа сделать это программно?» – iPatel

+0

без использования цикла – HelenaM

0

Узнать об удалении объекта ObjectForKey для d запись записи из NSMutabledictionary.

removeObjectForKey передать значение ключа, что вы имеете, как

все это Ваш ключ отображаемое_имя, InternalName, NumberValue, идентификатор

нравится этот

removeObjectForKey:@"id"; 
0

Первая из всего, что вам нужно, чтобы преобразовать массив в изменяемый массив, а затем вы можете удалите пары ключ-значение из словаря.

NSMutableArray *mutableArray = [yourArray mutableCopy];
for(int i=0;i<mutableArray.count;i++){
  NSMutableDictionary *outerDictionary = [mutableArray objectAtIndex:i];
  for(NSString *key in outerDictionary.allKeys){
    NSMutableDictionary *innerDictionary = [outerDictionary objectForKey:key];
    [innerDictionary removeObjectForKey:@"id"];
    [innerDictionary removeObjectForKey:@"NumberValue"];
  } }
Смежные вопросы