ios - 如何给一个NSMutableDictionary可变字典排序
黄舟
黄舟 2017-04-18 09:39:54
0
5
628

如何给一个可变字典按照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";
黄舟
黄舟

人生最曼妙的风景,竟是内心的淡定与从容!

全部回覆(5)
Peter_Zhu

字典結構是哈希,哈希表內部依照Hashcode來排序的。我們無法排序,結構上來說,你如果想要一個順序的集合的話。這個叫數組。所以你還是換成NSArray吧

大家讲道理

字典本來就是無序的啊。

Peter_Zhu

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\"}"]);
 
巴扎黑

你還是說一下你要解決什麼問題吧。你的要求和字典的設計是相違背的,但是可以用其他的輔助方法實現,例如用另外一個array保存key,需要值的時候再從map取值。

PHPzhong

我覺得排序沒有用啊,到時候你用的時候還是要根據鍵取值

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板