我尝试使用 @ 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 不太熟悉,所以请温柔一点。