我尝试使用 @ char 作为 NSDictionary 中的键,但我的应用程序只是崩溃了。我搜索了“无效”键名,在任何地方都找不到@“@”。如果我使用 @"@" 以外的其他东西,一切正常。
我有一个公司列表,我得到每个公司的第一个字母,然后我创建一个 NSMutableDictionary 条目,其中第一个字母作为键,一个 NSMutableArray 作为值。
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";
}
这很好用,它将@starting 公司正确地放置在A 部分。如果我让 firstLetter 保持不变(将其保留为 @"@"),应用程序将崩溃。
另外,这不是我的代码,我只是想修复它,我对 ObjC 和 Foundation 不太熟悉,所以请温柔一点。