如何从XML解析排序对象

时间:2010-10-15 09:30:52

标签: iphone objective-c xml parsing ios

所以我想解析一个xml并根据“课程”以升序显示(在UITableView中)“subject”

XML:

<parfumeo_kkn>
<tt_timetable>
    <id>1015</id>
    <day>1</day>
    <class_id>98</class_id>
    <lesson>9</lesson>
    <teacher>bt</teacher>
    <room>V1.2</room>
    <subject>M</subject>
    <pr_id>54</pr_id>
</tt_timetable>
<tt_timetable>
    <id>1014</id>
    <day>1</day>
    <class_id>98</class_id>
    <lesson>8</lesson>
    <teacher>bt</teacher>
    <room>V1.2</room>
    <subject>bg</subject>
    <pr_id>54</pr_id>
</tt_timetable>

等。

(在这个小例子中,在“M”之前会有“bg”。)我已经设置了我的解析器,但它没有按我想要的顺序工作。 请求帮助

3 个答案:

答案 0 :(得分:2)

您应该将解析器的逻辑与在表视图中显示结果的方式分开。解析器只执行解析xml的任务,通过使用NSSortDescriptor从解析器中排序结果,表视图的控制器将执行一些额外的任务,如下所示:

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

    [fetchRequest setSortDescriptors:sortDescriptors];

是的,之前我假设您正在使用Core Data,如果您只有一个普通数组,那么您只需调用:

    NSArray *myArray = [xmlResultArray sortedArrayUsingDescriptors:sortDescriptors];

现在您可以使用myArray填充到表视图控制器。

希望这有帮助!

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

要对数组进行排序,您只需执行此操作。

NSArray *sortedPairs = [originalArray sortedArrayUsingSelector:@selector(compare:)];

如果您有一本字典,并希望按键

获取已排序的数组
NSArray *arr = [dictionary keysSortedByValueUsingSelector:@selector(compare:)];

一旦你有阵列,你可以按照自己的意愿进行枚举。