NSDictionaryでのJSON応答では、大文字と小文字を区別する大文字と小文字を使用しようとしています。応答キーのタイプが異なる場合があります。キャメルケース、小文字、またはその他の混合の組み合わせです。この場合の感度の低いケースをチェックするための組み込み機能はありますか?
ありがとう。
NSDictionaryでのJSON応答では、大文字と小文字を区別する大文字と小文字を使用しようとしています。応答キーのタイプが異なる場合があります。キャメルケース、小文字、またはその他の混合の組み合わせです。この場合の感度の低いケースをチェックするための組み込み機能はありますか?
ありがとう。
最近、あなたのニーズに合った 2 つのクラスを共有しました。これらは、最初に挿入されたキーを保持しながら、大文字と小文字を区別しない操作 (NSDictionary
およびメソッドにちなんで命名) を提供します。NSMutableDictionary
試してみる:
https://github.com/keeshux/ios-components/tree/master/Components/Utils/KSCIDictionary
最善の方法は、NSDictionary のキーをすべて小文字またはすべて大文字に設定することです。
たとえば、文字列の NSArray があるとします。使用する前に keyName を取得し、lowercaseString または uppercaseString を使用して変換できます
NSString *itemName = @"lastName";
itemName = [itemName lowercaseString];
これにより、文字列が lastname に変更されます。または、uppercaseString を使用した場合は LASTNAME になります。
または、次のように辞書に追加するときにキー名を変更することもできます。
NSMutableDictionary *dict = [[NSMutableDictionary alloc] init];
[dict setObject:objectToAdd forKey:[key uppercaseString]];
- (NSString *)lowercaseString
これはデフォルトのNSStringメソッドであり、NSMutableDictionaryに追加するとき、またはNSMutableDictionaryから読み取るときに、[keylowercaseString]を実行するだけです。
私の場合、Dictionary のすべてのメソッドやプロパティは必要ありませんでした。大文字と小文字を区別しない添え字アクセスが必要でした。カスタム クラス ( NSMutableDictionary のスーパークラスではない) を作成し、添字付きアクセスを許可するメソッドを実装し、大文字と小文字を区別しないようにしました。
- (id) objectForKeyedSubscript: (NSString *) key {
NSMutableDictionary *theData = self->data;
return theData[[key lowercaseString]];
}
- (void) setObject: (id) newValue forKeyedSubscript: (NSString *) key {
NSMutableDictionary *theData = self->data;
theData[[key lowercaseString]] = newValue;
}