リクエストから返された JSON 配列があります。
データはそのままです(外部ソースから取得され、サーバーから変更することはできません):
[{"clients":
{"name":"Client name here","telephone":"00000","email":"clientemail@hotmail.com","website":"www.clientname.com"}
}]
この順番で JSON 配列を受け取ります。
以下のObjective-Cがあります:
//jsonString is the json string inside type NSString.
NSMutableDictionary *tempDict = [jsonString JSONValue];
NSMutableDictionary *clients = [tempDict objectForKey:@"clients"];
for(NSString *key in clients) {
id value = [tempDict objectForKey:key];
for(NSString *itemKey in key) {
NSLog(@"ITEM KEY %@: ",itemKey);
}
}
キーを印刷する順序は次のとおりです。
電話、
電子メール、
名前、
Web サイト
受信方法を印刷するために必要です (例):
名前
電話
メール
ウェブサイト
辞書は定義上ソートされていないことを読んだので、辞書の代わりに配列を使用して喜んでいます。
しかし、考えられる解決策に関して、StackOverflow でいくつかのスレッドを見てきました (を使用keysSortedByValueUsingSelector
):それぞれの値でソート
された NSDictionary キーの取得 Objective-C でキーに基づいて NSDictionary を並べ替えることはできますか?
私はそれらを試しましたが、どこにも行きません。間違っているのは私の実装だけかどうかはわかりません。
私が試した(試行1):
NSArray *orderedKeys = [clients keySortedByValueUsingComparator:^NSComparisonResult(id obj1, id obj2){
return [obj1 compare:obj2];
}];
for(NSString *key in orderedKeys) {
id value = [tempDict objectForKey:key];
for(NSString *keyThree in key) {
NSLog(@"API-KEY-ORDER %@: ",keyThree);
}
}
受信エラー: [__NSArrayM keySortedByValueUsingComparator:]: unrecognized selector sent to instance
。
また試してみました(試行2):
NSArray *sortedKeys = [[clients allKeys] sortedArrayUsingSelector: @selector(compare:)];
NSMutableArray *sortedValues = [NSMutableArray array];
for (NSString *key in sortedKeys){
[sortedValues addObject: [tempDict objectForKey: key]];
//[sortedValues addObject: [all objectForKey: key]]; //failed
}
ただし、クライアントが NSMutableDictionary であっても、セレクターで別のエラーが発生します。
[__NSArrayM allKeys]: unrecognized selector sent to instance 0x4b6beb0
私は、 を反復処理し、NSMutableDictionary
それらを手動でNSMutableArray
正しい順序で新しいものに配置しようと考えているところです。
どんなアイデアでも大歓迎ですか?
または、私の問題に対するコードスニペットの試みも同様に高く評価されます。