iOS13 insertObject:atIndex: 对象不能为 nil - 崩溃/错误

iOS13 insertObject:atIndex: object cannot be nil - crash / error

我有一个应用程序在 iOS 升级到 13 之前运行良好,但现在崩溃了。该应用程序从数组中查找国家代码,然后显示相关描述。

在 iOS13 中,当我们点击该视图时,我们会遇到“*** -[__NSArrayM insertObject:atIndex:]: object cannot be nil' 崩溃

问题似乎与 NSString stringWithFormat:@"%@-%@" 提取数据的方式有关。

例如,我可以将 @"%@-%@" 替换为 @"da-DK" 之类的选项 - 应用程序按预期执行,提取 "Danish (Denmark) " 描述,并且不会崩溃。

代码如下 - 任何人都知道 iOS13 中可能发生了什么变化?谢谢。

+ (NSString *) getTTSDescForDisplay:(NSString *) voiceLanguage {

    NSString *normalizedVoiceLanguage;
    NSArray *array = [voiceLanguage componentsSeparatedByString:@"-"];
    if ([array count] != 2) {
        return nil;
    } else {
        NSString *first = array[0];
        NSString *second = array[1];
        normalizedVoiceLanguage = [NSString stringWithFormat:@"%@-%@",first.lowercaseString,second.uppercaseString];
    }

    NSDictionary *dict = @{
                           @"ar-SA"       :@"Arabic (Saudi Arabia) ",
                           @"cs-CZ"       :@"Czech (Czech Republic) ",
                           @"da-DK"       :@"Danish (Denmark) "                       
                           };

    NSString *str = [dict objectForKey:normalizedVoiceLanguage];
    return str;
}

OK 在大量断点之后想通了。在上面的列表中,我遗漏了一个(新的?iOS13?)语言代码。

我加了...

@"en-IN"       :@"English (India) ",

这解决了问题。