如何给一个可变字典按照key
(首字母
)的来排序啊。有没有好的办法。。求教,谢谢!
NSMutableDictionary *dict=[NSMutableDictionary dictionary];
dict[@"app_key"]=@"2362558";
dict[@"fields"]=@"open_iid ";
dict[@"format"]=@"json";
ict[@"method"]=@"22222";
dict[@"timestamp"]=@"222222";
dict[@"v"]=@"2.0";
dict[@"sign_method"]=@"md5";
天蓬老师2017-04-18 09:41:54
字典结构是哈希,哈希表内部按照Hashcode来排序的。我们无法排序,结构上来说,你如果想要一个顺序的集合的话。这个叫数组。所以你还是换成NSArray吧
天蓬老师2017-04-18 09:41:54
https://github.com/sunbohong/...
我今天刚写了一个库,可以自定义排序。
用法
SunSortMutableDictionary *dic = [SunSortMutableDictionary new];
dic.comparator = ^(NSString* obj1,NSString* obj2){
return [obj1 compare: obj2];
};
dic[@"a"] = @"a";
dic[@"c"] = @"c";
dic[@"e"] = @"e";
NSData *data=[NSJSONSerialization dataWithJSONObject:dic options:0 error:NULL];
NSString *str=[[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
//str 的值为: @"{"a":"a","c":"c","e":"e"}";
XCTAssert([str isEqualToString:@"{\"a\":\"a\",\"c\":\"c\",\"e\":\"e\"}"]);
巴扎黑2017-04-18 09:41:54
你还是说一下你要解决什么问题吧。你的要求和字典的设计是相违背的,但是可以用其他的辅助方法实现,比如用另外一个array保存key,需要值的时候再从map取值。