如果我在 iPad 上打开飞行模式并尝试创建 NSURLConnection,我将收到错误消息“Internet 连接似乎处于离线状态。”如果我在 iPad 上更改为任何其他语言然后是英语,我仍然会看到相同的错误文本。我不应该在当前选择的语言中得到错误吗?
使用这段代码:
- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error {
NSLog(@"Error: %@",[error localizedDescription]);
}
最佳答案
我找到了我的问题的答案,并且由于它与这个问题相关,所以我将其分享,以便在其他人需要时可以提供帮助。
包含错误代码和本地化描述的文件位于 /System/Library/Frameworks/Foundation.Framework/Resources/en.lproj/FoundationErrors.strings
复制此文件并粘贴到其他地方(以避免弄乱原始文件)。现在在终端中运行命令将二进制文件转换为文本文件:
plutil -convert xml1 FoundationErrors.strings
现在将文件拖到您的 Xcode 项目中,然后右键单击并选择 Open as... Property list
。现在你有了 key 和描述。您可以翻译(如果您需要的语言在本地化中不可用)或根据需要自定义它们,并使用所需的名称保存它,在我的例子中是 Persian.strings
。
现在将此代码添加到您要使用它的方法中:
//persian error messages file full path
NSString * persianErrorsListFile = [[[NSBundle mainBundle] bundlePath] stringByAppendingPathComponent:@"Persian.strings"];
//Load file as dictionary
NSDictionary * persianErrorsList = [[NSDictionary alloc] initWithContentsOfFile:persianErrorsListFile];
NSString *errorKey = [NSString stringWithFormat:@"Err%ld", (long)errorCode];
NSString *errorMessage = persianErrorsList[errorKey];
关于iphone - NSURLConnection 返回 NSError 只有英语作为语言?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7050125/