NSError是系统错误信息的重要类。
NSError中有三个重要的私有变量code,domain和userInfo。
code:是一个整数,最好是一个枚举,和特定的错误域是对应的。
domain:是一个字符串,标记错误域。
userInfo:是一个字典,包括任意的健值对。其中有一些预定义的健:
NSLocalizedDescriptionKey:本地化的错误描述
NSLocalizedRecoverySuggestionErrorKey:本地化的恢复建议
NSLocalizedFailureReasonErrorKey:本地化的失败原因
NSError 主要有两个用法,一个是获取错误信息,另一个是编辑错误信息。
//获取错误
NSError *error = nil;
BOOL success = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:@"path" error:&error];
if (!success) {
NSLog(@"%@", [error localizedDescription]);
}
//预定义信息
#define JohnnyErrorDomain @"com.JohnnyError.Domain"
typedef NS_ENUM(NSInteger, ErrorFail){
ErrorOne = 1,
ErrorTwo,
ErrorThree
};
//产生错误信息
NSDictionary *userInfo = @{
NSLocalizedDescriptionKey: NSLocalizedString(@"Operation fail", nil),
NSLocalizedFailureReasonErrorKey: NSLocalizedString(@"The operation timed out.", nil),
NSLocalizedRecoverySuggestionErrorKey: NSLocalizedString(@"Have you tried turning it off and on again?", nil)
};
NSError *error = [NSError errorWithDomain:JohnnyErrorDomain
code:2
userInfo:userInfo];
//提示
[[[UIAlertView alloc] initWithTitle:error.localizedDescription
message:error.localizedRecoverySuggestion
delegate:nil
cancelButtonTitle:NSLocalizedString(@"OK", nil)
otherButtonTitles:nil, nil] show];