我正在使用Rubymotion开发一个iOS
应用程序,该程序非常好,直到我添加了一个新的UIViewController
。我已经通过xcode添加了控制器,并且只有一个UITextField
作为元素。在运行模拟器并显示此特定场景时,我得到NSError
的实例。我也没有在屏幕上看到UITextField
元素。
任何人都可以解释它是什么以及我如何处理NSError
并理解它?
此时的任何帮助都会有很大的帮助。
UPDATE :无论控制器是什么,每次启动我的应用程序时,我都会收到NSError实例。我昨天升级到了Xcode 5.1。不知道这是否与错误有关。
更新2 :这是我个人感到困惑的结果。升级到Xcode 5.1之后,我已经假设NSError被引发了,并认为这是一个bug。原因是我在升级到5.1的同时开始使用推送通知。由于推送通知不能在模拟器中工作,因此模拟器会返回NSError。搞砸了很长时间,花了几个小时试图调试这个问题。
答案 0 :(得分:2)
NSError
是一个类,它被用作处理objective-c中错误的首选方法。通常它的工作方式如下:
您声明了一个NSError
指针,并将该地址作为参数发送给可能失败的方法。如果方法中出现问题,则会创建NSError
对象并填充有关错误的信息,并且当方法返回时,您可以检查错误对象是否有任何问题。
NSError *error;
[someObject someFunctionWithParam:paramOne andError:&error];
if ( error ) {
// Here you can inspect the error and act accordingly
NSLog(@"%@", [error localizedDescription]);
}
如果您是实施方法的人,通常看起来像这样。
- (void)someFunctionWithParameter:(NSString *)argOne andError:(NSError **)error {
// something goes wrong
*error = [NSError errorWithDomain:@"SomeDomain" code:500 userInfo:@{@"infoKey": @"some info"}];
}
关于你问题的标题。没有抓住NSError
,因为他们没有被抛出。只抛出异常。