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に精通していないので、気を付けてください。