NSDictionaryで@ charをキーとして使用しようとしましたが、アプリケーションがクラッシュしました。 「無効な」キー名を検索したところ、@ "@"はどこにも見つかりませんでした。 @ "@"以外のものを使用すると、すべて正常に動作します。NSDictionaryのキーとして@charを使用
私は会社のリストを持っていますが、私は各社の最初の手紙を得て、最初の文字をキーにNSMutableArrayを値としてNSMutableDictionaryエントリを作成しています。
NSMutableDictionary indexDictionary = [[NSMutableDictionary alloc] init];
// here we have a loop on companyName
{
NSString *fristLetter = [[companyName substringToIndex:1] uppercaseString];
NSMutableArray *arrayOfIndexedCompanies = [indexDictionary valueForKey:firstLetter];
if (arrayOfIndexedCompanies) {
[arrayOfIndexedCompanies addObject:companyName]
}
else {
NSMutableArray *newArray = [NSMutableArray array];
[indexDictionary setObject:newArray forKey:firstLetter];
[newArray addObject:companyName];
}
}
私はスローにブレークポイントブレークを有効にし、それがで停止[indexDictionary valueForKey:firstLetter] ... firstLetterがある場合にのみ@ "@"。言うならば は私が持っていた:
if ([firstLetter isEqualToString:@"@"]) {
firstLetter = @"A";
}
と、これは正常に動作し、それが正しくAセクションに@開始企業を配置します。 firstLetterを変更しないで@ @ "@"のままにしておくと)、アプリケーションがクラッシュします。
また、これは実際に私のコードではありません。私はそれを修正しようとしています。私はObjCとFoundationにはあまり慣れていません。あなたが@は "\ u0040" 具体的
の質問は何ですか
valueForKey:
のobjectForKey:
を呼ぶ幸せではないことを推測しますか? – Jasper他の誰かが同じ問題を抱えているかどうかを調べようとしていましたが、これを逃れる/修正してキーとして@を使用する方法がありますか? – andrei
これを質問に入れてください。 (実際にここで尋ねるものではないので、「他の誰かがこのことを体験しているのですか?」とスキップします)また、なぜあなたはしたいですか? – Jasper