所以我想解析一个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”。)我已经设置了我的解析器,但它没有按我想要的顺序工作。 请求帮助
答案 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:)];
一旦你有阵列,你可以按照自己的意愿进行枚举。