0

У меня есть NSMutableDictionary, который был создан из строки JSON.Сравнение значений NSArray с NSMutableDictionary

Проблема в том, что мне нужно провести довольно сложные сопоставления данных между NSArray и NSMutableDictionary. Я не могу найти эффективный способ сделать это.

Словарь выглядит следующим образом:

dictionaryMain

0 = { 
    key1 = value1; 
    key2 = value2; 
    key3 = { 
     subKey1 = { 
      subSubKey1 = { 
       inner1 = apples; 
       inner2 = oranges; 
      }; 
      subSubKey2 = { 
       inner1 = grapes; 
       inner2 = lemons; 
      }; 
      subSubKey3 = { 
       inner1 = mangoes; 
       inner2 = kiwis; 
      }; 
     }; 
    }; 
    key4 = { 
     subKey1 = { 
      subSubKey1 = { 
       inner1 = pineapples; 
       inner2 = apples; 
      }; 
      subSubKey2 = { 
       inner1 = oranges; 
       inner2 = mangoes; 
      }; 
     }; 
    }; 
}; 

1 = { 
    key1 = value1; 
    key2 = value2; 
    key3 = { 
     subKey1 = { 
      subSubKey1 = { 
       inner1 = watermelon; 
       inner2 = grapes; 
      }; 
      subSubKey7 = { 
       inner1 = bananas; 
       inner2 = oranges; 
      }; 
     }; 
    }; 
    key4 = { 
     subKey1 = { 
      subSubKey5 = { 
       inner1 = kiwis; 
       inner2 = mangoes; 
      }; 
     }; 
    }; 
}; 

// ... and so on 

У меня есть массив arrayOfKeys, который имеет некоторые из subSubKey с следующим образом:

arrayOfKeys

{ 
    subSubKey5, 
    subSubKey7, 
    subSubKey10 
} 

I нужно зацикливать через мой NSMutableDictionary и выберите только те объекты, которые имеют те же ключи, что определены arrayOfKeys. Эти выбранные объекты будут добавлены в новый словарь.

Например, если arrayOfKeys содержит subSubKey7, то объекта [1] будет выбран из NSMutableDictionary, так как ключ глубоко внутри она имеет имя subSubKey7.

Я попытался выяснить простой способ сделать это, но я не смог найти жизнеспособное решение. Единственное, что я могу придумать, это использовать множество вложенных циклов и грязный быстрый код.

Я провел два дня, пытаясь понять это. Любое решение этой проблемы, ребята?

Спасибо!

+1

Если вы могли бы реструктурировать json, чтобы включить объект 1 в качестве значения для subkey7 или, как предложено ниже, какую-либо функцию, которая заявляет, что subkey = x, возвращает объект, else снова вызывает функцию – aug2uag

ответ

2

Вы должны использовать рекурсивный метод (или функцию), который проверяет передаваемый им словарь и вызывает себя для обработки любых суб-словарей. Метод должен возвращать все, что он находит, и все, что можно найти, когда оно называет себя.

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

+0

Вы вводите термин «рекурсивный» для OP или предполагая, что OP знает, что это значит? –

+1

Моя цель - инициировать распознавание знаний для использования или термин для google для ... – Wain

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