Apple 是不是为 NSError 的常见 NSButton 标题提供本地化恢复选项?

Posted

技术标签:

【中文标题】Apple 是不是为 NSError 的常见 NSButton 标题提供本地化恢复选项?【英文标题】:Does Apple provide localized recovery options for common NSButton title's for NSError's?Apple 是否为 NSError 的常见 NSButton 标题提供本地化恢复选项? 【发布时间】:2010-07-02 16:21:22 【问题描述】:

Apple 是否为常见的 NSButton 标题提供本地化字符串,例如 OKCancelTry Again 的等价物退出

我正在尝试从另一个 Cocoa 框架交给我的一个人创建一个自定义 NSError 对象。我想实现NSErrorRecoveryAttempting 非正式协议,让用户再试一次 或在发生错误时退出。对于(简要)示例:

NSString *cachesDir = ...;
NSError  *error     = nil;
BOOL     success    = [[NSFileManager defaultManager] createDirectoryAtPath:cachesDir withIntermediateDirectories:NO attributes:nil error:&error];

// Failed creating the directory.
if (!success)

 NSMutableDictionary *errorUserInfoCopy = [[[error userInfo] mutableCopy] autorelease];

 NSArray *recoveryOptions = [NSArray arrayWithObjects:@"Try Again", @"Quit", nil];
 [errorUserInfoCopy setObject:recoveryOptions forKey:NSLocalizedRecoveryOptionsErrorKey];

 NSError *newError = [NSError errorWithDomain:[error domain] code:[error code] userInfo:errorUserInfoCopy];
 [NSApp presentError:newError];

在第 10 行,NSArray *recoveryOptions = ...,Apple 是否提供了一种方法来轻松获得 Try Again/Quit 的本地化版本(以及其他常见的 NSButton 标题)?还是我必须手动填充.strings 文件并改用NSLocalizedString()

Apple 确实为非自定义的 NSError 提供了本地化恢复选项:

NSArray *recoveryOptions = [anError localizedRecoverySuggestion];

但这通常只是默认为本地化的“OK”。不适合自定义NSErrorRecoveryAttempting

【问题讨论】:

【参考方案1】:

苹果似乎没有。

【讨论】:

以上是关于Apple 是不是为 NSError 的常见 NSButton 标题提供本地化恢复选项?的主要内容,如果未能解决你的问题,请参考以下文章

Apple 检查返回值而不是错误的模式背后的基本原理是啥?

在 CloudKit 中检查/比较 NSError 代码?

返回 NAN 以指示对同时设置 NSError 的方法的无效输入的危险

为啥使用 NSError 间接参数而不是 @try/@catch/@finally

Bridging-header 是不是有可能将 (void (^)(NSError *))block (ObjC) 变成块:() throws -> () (Swift)?

域名管理常见问题:啥是NS记录?(中科三方)