扩展NSError并不是一个坏主意。
我也为自己的使用创建了一个NSError
类别。我想与您分享。
(1) 创建一个strings
文件来定义所有错误代码:
"-1001" = "Connection time out";
"-1003" = "Cannot find Host";
"-1004" = "Cannot connect to Host";
"-1005" = "Server is temporarily down";
"-1009" = "The Internet connection appears to be offline";
"-1012" = "Authentication failed";
"2000" = "This is a custom error message";
"Unknown error" = "Network error occured";
(2) 在NSError上创建一个类别,比如说"NSError+ErrorInfo":
@interface NSError (ErrorInfo)
-(NSString *)userDescription;
@end
(3) 定义它:
#define ERROR_KEY(code) [NSString stringWithFormat:@"%d",code]
#define ERROR_LOCALIZED_DESCRIPTION(code) NSLocalizedStringFromTable(ERROR_KEY(code),@"Errors",nil)
@implementation NSError (ErrorInfo)
-(NSString *)userDescription
{
NSString *errorDescrption = NSLocalizedStringFromTable(ERROR_KEY(self.code),@"Errors",nil);
if (!errorDescrption || [errorDescrption isEqual:ERROR_KEY(self.code)]){
return NSLocalizedStringFromTable(@"Unknown error",@"Errors",nil);;
}
else{
return ERROR_LOCALIZED_DESCRIPTION(self.code);
}
return nil;
}
@end
(4) 利用它:
NSError *yourError
yourError = [NSError errorWithDomain:@"yourDomain" code:2000 userInfo:details]
NSLog(@"%@",[yourError userDescription])
NSError
子类,因为NSError
已经提供了一个可以设置为任何特定值的“domain”属性。你考虑添加什么样的值? - trojanfoeuserInfo
е—е…ёж·»еЉ жқҰз›®пәЊз”±NSError
жЏђдң›дғ†з›ёе…ізљ„覆盖。 - trojanfoe