對來自網絡調用的返回NSData使用NSJSONSerialization我找回NSDictionaries和NSArrays的嵌套結構。嵌套的NSDictionary結構 - 如何持有對樹中每個節點的父節點的引用
現在我想解析該樹結構併爲進一步使用做好準備。樹的每個節點總是攜帶一個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。
我瞭解到,我不能只是添加一個新的關鍵「父母」,並將其值設置爲父節點字典。這在調用對象時會創建段錯誤。
代碼的基本例如,在創建父鍵:
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
爲什麼會出現分段錯誤?由於節點的父鍵中的反向引用,打印出結構的描述時,這是一個無限循環嗎?
你們有沒有其他辦法解決這個問題?我是否必須持有樹結構的外部表示,指向每個鍵或實際存在某種方式來存儲對父節點的某種引用?
很多,很多預先感謝!
謝謝!我有點期待答覆,現在我相信我需要寫自己的模型。通過這個我可以拿回參考。 – Nonlinearsound 2011-12-30 17:03:18
@Nonlinearsound不客氣。請看看NSTreeNode類。我認爲應該更好。 – MadhavanRP 2011-12-30 17:12:11
再次感謝。我正在爲iOS開發,不幸的是NSTreeNode不支持那裏。但無論如何,我會仔細看看它,即使只是想了解它的結構。 – Nonlinearsound 2011-12-30 17:24:47