Objective-C - tableView,按降序排序JSON数组[重复]
Posted
技术标签:
【中文标题】Objective-C - tableView,按降序排序JSON数组[重复]【英文标题】:Objective-C - tableView, sort JSON array in descending order [duplicate] 【发布时间】:2014-04-22 17:08:34 【问题描述】:这是 JSON,按降序显示,id_no
"users":[ "id_no":"501", "type":"User", "country":"United Kingdom", "city":"London" "id_no":"500", "type":"Admin", "country":"United States", "city":"San Fransisco" ]
这是我的代码:
- (void)viewDidLoad [super viewDidLoad]; NSURL *jsonURL = [NSURL URLWithString:@"http://example.com/sohw.php"]; NSData *jsonData = [NSData dataWithContentsOfURL:jsonURL]; NSError *error = nil; NSDictionary *dataDictionary = [NSJSONSerialization JSONObjectWithData:jsonData options:0 error:&error]; self.reports = [dataDictionary objectForKey:@"users"];
我要做的是在tableView上显示时按照JSON文件对users
进行降序排序。
关于如何做到这一点的任何提示?
【问题讨论】:
旁注 - 不要像在viewDidLoad
方法中那样在主线程上进行同步 Internet 调用。它会挂起用户界面并给用户带来糟糕的体验。
***.com/questions/2393386/… ?
@rmaddy 工作正常,没有任何问题,无论如何你能提出更好的解决方案吗?
执行异步/GDC。好吧,它现在正在阻止你的 UI。
对于蜂窝连接速度较慢或服务器过载的某些用户来说,它无法正常工作。始终在后台线程上从 Internet 加载数据。总是。
【参考方案1】:
如果您想要对数组进行排序,最好的办法是查看 NSArray 文档,搜索“sort”一词并在那里选择一种对数组进行排序的方法。 sortedArrayUsingComparator:是我个人的最爱。
【讨论】:
【参考方案2】:您需要使用要排序的字段的键路径:
-(void)viewDidLoad
[super viewDidLoad];
NSURL *jsonURL = [NSURL URLWithString:@"http://example.com/sohw.php"];
NSData *jsonData = [NSData dataWithContentsOfURL:jsonURL];
NSError *error = nil;
NSDictionary *dataDictionary = [NSJSONSerialization JSONObjectWithData:jsonData options:0 error:&error];
NSSortDescriptor *sorter = [NSSortDescriptor sortDescriptorWithKey:@"id_no" ascending:NO];
self.reports = [[dataDictionary objectForKey:@"users"] sortedArrayUsingDescriptors:@[sorter]];
【讨论】:
我在这里添加了这个答案,以防other duplicate question被删除..!以上是关于Objective-C - tableView,按降序排序JSON数组[重复]的主要内容,如果未能解决你的问题,请参考以下文章
ios objective-c tableView searchBar
在现有的 tableview 中使用 Objective-C 实现 UISearchController
IOS/Objective-C:确定以编程方式创建的 tableview 中 imageView 的大小