gpt4 book ai didi

objective-c - 对象 C : Grouping strings into NSMutableDictionary

转载 作者:行者123 更新时间:2023-12-01 17:01:41 25 4
gpt4 key购买 nike

我有一个包含一堆字符串的 NSArray。每个字符串都列出了一个父子类型,例如:

Tool: Saw
Fruit: Apple
Fruit: Orange
Tree: Maple
Fruit: Banana
Tree: Oak
Tool: Hammer
Tree: Cedar

我需要将它们放入的最终结构是(排序的 parent 和 child ):
Fruit:
- Apple
- Banana
- Orange
Tool:
- Hammer
- Saw
Tree:
- Cedar
- Maple
- Oak

我想知道如何将它们分组在其父类型下,按该父类型排序并对子项进行排序。我认为最好使用 NSMutableDictionary 将它们变成键和对象。

这是我到目前为止测试的内容,但并没有达到我想要的效果:
// Add to tree
if ([tree objectForKey:pathParent]) {
NSMutableArray *temp = (NSMutableArray *)[tree objectForKey:pathParent];
[temp addObject:name];
[tree removeObjectForKey:pathParent];
[tree setObject:temp forKey:pathParent];

} else {
[tree setObject:[NSMutableArray arrayWithObject:name] forKey:pathParent];
}//end

我该怎么做?

最佳答案

我认为最简单的方法是对原始列表进行字母排序

Tool: Saw
Fruit: Apple
Fruit: Orange
Tree: Maple
Fruit: Banana
Tree: Oak
Tool: Hammer
Tree: Cedar

要得到:
Fruit: Apple
Fruit: Banana
Fruit: Orange
Tool: Hammer
Tool: Saw
Tree: Cedar
Tree: Maple
Tree: Oak

从那里您可以轻松地遍历数组并对其进行格式化。查看第一个字符串的第一部分并打印它,然后换行第二部分。查看第二个字符串,如果它的第一部分不同,您有一个新的父级,所以像第一个一样打印,否则只打印字符串的第二部分。以这种方式继续。

您还可以将元素存储在树中,这样您就可以拥有一个带有子节点的树,而不是“父:节点”格式的字符串列表。这将使您能够拥有带有子节点的子节点等等。

第一个选项有效,但树数据结构是更健壮的选项,更容易扩展。

如果这些没有意义,请告诉我,我会更新以澄清。

关于objective-c - 对象 C : Grouping strings into NSMutableDictionary,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6209175/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com