我正在努力捕获我的应用程序中的错误,我正在研究使用NSError.我对如何使用它以及如何填充它感到有些困惑.
有人可以提供一个关于我如何填充然后使用的例子NSError吗?
有一篇关于为您自己的框架设置错误域的SO帖子,但是关于为您自己的项目/应用程序设置错误域和自定义错误代码的最佳做法是什么?
例如,假设您正在使用具有大量验证的核心数据密集型应用程序,您是否应该坚持使用"现成的"核心数据错误代码(例如NSManagedObjectValidationError来自CoreDataErrors.h),或者您应该创建自己的错误代码MyAppErrors.h并定义错误更具特异性(即MyAppValidationErrorInvalidCombinationOfLimbs?
创建自定义错误域和错误代码集可能会明显消除代码歧义,但维护过多是否需要担心错误代码编号冲突?或者还有其他问题吗?
我正在开发一个iOS项目.
在此应用程序中,我正在从服务器下载图像.
问题:
在下载图像时,我收到请求超时.根据文档HTTP请求超时的状态代码是408.
但在我的应用程序中,我收到HTTP状态代码0,出现以下错误
错误域= NSURLErrorDomain代码= -1001"请求超时." UserInfo = 0xb9af710 {NSErrorFailingURLStringKey = http://xxxx.com/resources/p/PNG/1383906967_5621_63.jpg,NSErrorFailingURLKey = http://xxxx.com/resources/p/PNG/1383906967_5621_63.jpg,NSLocalizedDescription =请求超时.,NSUnderlyingError = 0x13846870"请求超时."}
在搜索期间,通过互联网,我找不到有关HTTP状态代码0的信息.
任何人都可以向我解释这个吗?
我刚刚完成了一个iPhone应用程序编程课程.作为课程的一部分,我看到了
@try指令提供异常处理return nil我问我是否应该对我编写的新代码使用异常处理(例如,如果我同时编写前端和逻辑代码,那么它们之间的通信就在我手中)但是我被告知不,我不应该使用新的异常码.(但他没有详细说明,然后课程继续进行,我想也许后来原因会变得清晰......)
当然例外优于return nil?你可以捕获特定的类型,你不要忽略通常成功的函数的返回类型来忽略它们,你有可以记录的文本消息,它们允许你的代码专注于正常情况,因此更具可读性.为什么要使用例外.
所以你怎么看?我的教练是不是不使用Objective-C例外?如果是这样,为什么?
我NSURLRequest在我的iPhone应用程序中使用该类,并且调用它的方法返回一个NSString很好的连接通过正常,但问题是我需要将NSError转换为NSString所以我可以将其返回或if()对它进行一些陈述.
有任何想法吗?:)
var data: NSDictionary =
NSJSONSerialization.JSONObjectWithData(responseData, options:NSJSONReadingOptions.AllowFragments, error: error) as NSDictionary;
Run Code Online (Sandbox Code Playgroud)
这行代码给了我错误
NSError is not convertable to NSErrorPointer.
Run Code Online (Sandbox Code Playgroud)
所以我想把代码更改为:
var data: NSDictionary =
NSJSONSerialization.JSONObjectWithData(responseData, options:NSJSONReadingOptions.AllowFragments, error: &error) as NSDictionary;
Run Code Online (Sandbox Code Playgroud)
这会将NSError错误转换为NSErrorPointer.但后来我得到一个新的错误,无法理解它:
NSError! is not a subtype of '@|value ST4'
Run Code Online (Sandbox Code Playgroud) 我不知道,为什么在NSError之前,如下所示,我们是否应该:&error而不是error?
例如
NSArray *result = [managedObjectContext executeFetchRequest:fetchRequest error:&error];
Run Code Online (Sandbox Code Playgroud)
希望你能解释一下,这也总是这样或者只是在某些情况下需要这个吗?谢谢.
我正在尝试创建一个错误对象以显示给用户.
let userInfo: [NSObject : AnyObject] =
[
"NSLocalizedDescriptionKey" : NSLocalizedString("Unauthorized", comment: ""),
"NSLocalizedFailureReasonErrorKey" : NSLocalizedString("Unauthorized", comment: "")
]
let err = NSError(domain: "ShiploopHttpResponseErrorDomain", code: httpResponse.statusCode, userInfo: userInfo)
print("Error in Post: \(err.localizedDescription)")
Run Code Online (Sandbox Code Playgroud)
不幸的是输出是:
Error in Post: The operation couldn’t be completed.(ShiploopHttpResponseErrorDomain error 401.)
Run Code Online (Sandbox Code Playgroud)
我希望能够向用户显示他应该激活他的帐户.有任何想法吗??
我正在创建一个应该返回错误的库,所以我想知道哪个应该用于我的目的.
更新: 我应该澄清,返回的结果将来自异步调用,所以我需要通知用户是否有错误,我想知道哪种类型我应该使用Error或NSError.
我在我的视图控制器中有这个方法,如下所示:
- (void)parser:(PaymentTermsLibxmlParser *)parser encounteredError:(NSError *)error
{
NSLog("error occured");
}
Run Code Online (Sandbox Code Playgroud)
在这里,我需要在我的警报中的NSError中显示实际错误消息,任何人都可以建议如何获取它.