Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/43.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 如何对从XML解析的对象进行排序_Iphone_Objective C_Xml_Parsing_Ios - Fatal编程技术网

Iphone 如何对从XML解析的对象进行排序

Iphone 如何对从XML解析的对象进行排序,iphone,objective-c,xml,parsing,ios,Iphone,Objective C,Xml,Parsing,Ios,因此,我想解析一个xml并根据“课程”按升序显示(在UITableView中)“主题” XML: 1015 1. 98 9 英国电信 V1.2 M 54 1014 1. 98 8. 英国电信 V1.2 背景 54 ect。 (在这个小示例中,“M”之前会有“bg”。)我已经准备好设置解析器,但它没有按照我希望的顺序工作。 thx要获得帮助,您应该将解析器的逻辑与在表视图中显示结果的方式分开。解析器只执行其解析xml的任务,表视图的控制器将通过使用NSSortDescriptor对解析器的结

因此,我想解析一个xml并根据“课程”按升序显示(在UITableView中)“主题”

XML:


1015
1.
98
9
英国电信
V1.2
M
54
1014
1.
98
8.
英国电信
V1.2
背景
54
ect。

(在这个小示例中,“M”之前会有“bg”。)我已经准备好设置解析器,但它没有按照我希望的顺序工作。
thx要获得帮助,您应该将解析器的逻辑与在表视图中显示结果的方式分开。解析器只执行其解析xml的任务,表视图的控制器将通过使用NSSortDescriptor对解析器的结果进行排序来执行一些额外的任务,示例如下:

    NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"lesson" ascending:YES];
    NSArray *sortDescriptors = [[NSArray alloc] initWithObjects:sortDescriptor, nil];

    [fetchRequest setSortDescriptors:sortDescriptors];
是的,之前我假设您使用的是核心数据,如果您只有一个普通阵列,那么您只需调用:

    NSArray *myArray = [xmlResultArray sortedArrayUsingDescriptors:sortDescriptors];
现在可以使用myArray填充到表视图控制器中


希望这有帮助

也许,您可以解析XML文件,将对象放入数组中,然后对该数组进行排序

NSArray *myArray = [parser parseTheFile:file];
[self sortTheArray:myArray];

要对数组进行排序,只需执行以下操作

NSArray *sortedPairs = [originalArray sortedArrayUsingSelector:@selector(compare:)];
如果您有一个字典,并且希望获得按键排序的数组,那么

NSArray *arr = [dictionary keysSortedByValueUsingSelector:@selector(compare:)];

一旦你有了数组,你就可以随心所欲地枚举。

上面的回答比我的好。=)但我也要感谢你。。。不幸的是,我太笨了,无法正确使用它-/他假设你正在使用核心数据。非常感谢。。但是仍然不起作用。。我将您的行放入-(void)parserDidEnddocument:NSSortDescriptor*sortDescriptor=[[NSSortDescriptor alloc]initWithKey:@“lesson”升序:是]自动删除];NSArray*sortDescriptors=[[NSArray alloc]initWithObjects:sortDescriptor,nil];[使用描述符对故事进行分类:分类描述者];也许我弄错了,但我的输出保持不变。嗨,dav3,请看我编辑的答案。您必须使用调用SorterDarrayUsingDescriptor的结果填充到表视图中。我以为你知道,对不起,谢谢sfa。。。我只是重新定义了我的数组,而不是使用新数组。。。resultArray=[resultArray SortDarray使用描述符:sortDescriptors];我不知道这是否明智,但它有点奏效……不客气!考虑接受答案,因为它会让别人知道你的问题的答案在哪里!当回调调用您检查的每个开始元素的特定元素类型时,您的案例将是课程和相应的主题。把这一对放进字典里,你们可以把它放进某个容器里。以后你可以根据自己的意愿使用。谢谢你的帮助。但是:我得到的只是:{lesson=“9\n 8\n 11\n 11\n 10\n 10\n 5\n 4\n 3\n 2\n 1\n”;subject=“bg\n bg\n CAE\n CAE\n CAE\n CAE\n Gg\n G\n G\n G\n M\n”;而且现在只有一个单元格充满了整个数组。^^^我应该认真放弃它^^
NSArray *arr = [dictionary keysSortedByValueUsingSelector:@selector(compare:)];