Используя NSJSONSerialization для возвращенных NSData из сетевого вызова, я получаю обратно вложенную структуру NSDictionaries и NSArrays.
Теперь я хотел проанализировать эту древовидную структуру и подготовить ее для дальнейшего использования.Каждый узел дерева всегда несет NSArray подузлов (NSDictionaries).Каждый из этих узлов должен иметь обратную ссылку на свой родительский узел, содержащий NSArray, частью которого является подузел.
Это базовый пример структуры, о которой я говорю:
Node {
nodes:[
node {parent:Node,name:foo},
node {parent:Node,name:bar},
node {parent:Node,name:baz},
]
,name:root}
Каждый узел является NSDictionary, а каждый подузел - коллекцией NSArray, содержащей NSDictionaries.
Я узнал, что не могу просто добавить новый ключ "parent" и установить его значение в словаре родительского узла.Это создает segfault при вызове объекта.
Базовый пример кода, создание родительского ключа:
NSMutableDictionary * foo = [NSMutableDictionary dictionaryWithObjectsAndKeys:@"foo",@"name",[NSNumber numberWithInt:1],@"value",nil];
NSMutableDictionary * bar = [NSMutableDictionary dictionaryWithObjectsAndKeys:@"bar",@"name",[NSNumber numberWithInt:2],@"value",nil];
NSMutableDictionary * baz = [NSMutableDictionary dictionaryWithObjectsAndKeys:@"baz",@"name",[NSNumber numberWithInt:3],@"value",nil];
NSMutableArray *array = [NSMutableArray arrayWithObjects:foo,bar,baz,nil];
NSMutableDictionary * container = [NSMutableDictionary dictionaryWithObjectsAndKeys:@"root",@"name",array,@"nodes",nil];
[foo setValue:container forKey:@"parent"];
NSLog(@"%@",foo); // <-- segfault here
Почему я получаю ошибку сегментации?Является ли это бесконечным циклом при выводе описания структуры из-за обратной ссылки в родительском ключе узла?
У вас, ребята, есть какой-то другой подход к этой проблеме здесь?Должен ли я содержать внешнее представление древовидной структуры, указывающее на каждый ключ или IS , на самом деле существует способ хранения какой-либо ссылки на родительский узел ??
Много, многозаранее спасибо !!!