我已经开发了一些iOS 6.1
代码来处理NSError
. 但是,我对此并不满意。它充其量只是一个黑客:
-(bool) reptErrAtModule: (NSString *) module
atSubr: (NSString *) subr
atFunc: (NSString *) func
withErr: (NSError *) err
{
id value = [[err userInfo] objectForKey: NSUnderlyingErrorKey];
NSString * errDesc = (value != nil) ?
[value localizedDescription]:
(NSString *)[[err userInfo] objectForKey: @"reason"];
NSLog( @"ERR -> %@",[NSString stringWithFormat:
@"(%@>%@) %@ failed! %@",module,subr,func,errDesc] );
}
我有一个更简单的形式(没有(NSString *)[[err userInfo] objectForKey: @"reason"]
案例),它适用于我从调用removeItemAtPath
.
但是后来我从这段代码中得到了一个错误:
NSPersistentStore * entStor =
[myPerStoCor addPersistentStoreWithType: NSSQLiteStoreType
configuration: nil
URL: [NSURL fileURLWithPath: Path]
options: nil
error: &err];
我的例程未能提取错误。所以我添加了@"reason"
逻辑,因为我可以在调试器的 Info 数据中看到我想要的文本。
现在代码适用于两种类型的错误,但我认为这不是这样做的方法。必须有一种更好、更通用的方法来处理系统可以返回给您的所有类型的错误NSError
。