2015-02-19 5 views
0

Я получил JSON сериализованной NSDictionary со структурой типа:NSDictionary, замените строку вхождений

key1_1 = (//Array of dictionaries 
     { //dict 1 
      key2_1 = val2_1 
      key2_2 = @"TO_BE_REPLACED" 
      key2_3 = (//Another array of dictionaries 
         { //dict 
         key2_3_1 = val2_3_1 
         key2_3_2 = @"TO_BE_REPLACED" 
         ... 
         }, 
         ... //more dicts 
        ) 
      }, 
      ... //more dicts 
     ), 
key1_2 = ... 

Таким образом, ее в основном получил сложную структуру массивов и словарей. На любом уровне я могу встретить строку «TO_BE_REPLACED», которую необходимо заменить другой строкой. Обратите внимание, что ключи будут разными.

Я могу успешно перемещаться по структуре с помощью рекурсии. Но моя проблема заключается в том, что NSDictionary не может быть изменен, пока он повторяется.

Каковы возможные решения этой проблемы?

+0

Вы посмотрели варианты, представленные в NSJSONSerialization? – gnasher729

ответ

2

Тип NSDictionary для NSMutableDictionary.Or можно использовать класс NSObject для хранения из NSMutableDictionary в объект класса модели, чтобы было легко отредактировать значение в нем и восстановить обратно в mutableDictionary.

+0

те же правила применяются к NSMutableDictionary, вы не можете изменять его во время повтора. – NSRover

+0

Но во время iteaating, если вы нашли нужное значение вместо того, чтобы вставлять это значение с помощью setvalue в словарь, вы можете поместить значение, которое вы хотите. – ashForIos

+0

не уверен, что я вас понимаю, но предполагаю, что вы говорите о преобразовании моего словаря в NSObject: он не будет работать в моем случае, словарь не имеет фиксированной структуры. – NSRover

0

Если вложенные словари содержат одинаковые ключи, вы можете пойти с классом модели. Класс модели будет иметь ключи как свойства и свойство объекта того же класса. Используя это, вы можете легко заменить строку «Подлежит замене».

+0

ключи могут отличаться. Обновлен вопрос. – NSRover