如何捕获iOS模拟器中抛出的NSError实例

时间:2014-03-27 06:46:35

标签: ios iphone objective-c cocoa-touch rubymotion

我正在使用Rubymotion开发一个iOS应用程序,该程序非常好,直到我添加了一个新的UIViewController。我已经通过xcode添加了控制器,并且只有一个UITextField作为元素。在运行模拟器并显示此特定场景时,我得到NSError的实例。我也没有在屏幕上看到UITextField元素。

任何人都可以解释它是什么以及我如何处理NSError并理解它?

此时的任何帮助都会有很大的帮助。

UPDATE :无论控制器是什么,每次启动我的应用程序时,我都会收到NSError实例。我昨天升级到了Xcode 5.1。不知道这是否与错误有关。

更新2 :这是我个人感到困惑的结果。升级到Xcode 5.1之后,我已经假设NSError被引发了,并认为这是一个bug。原因是我在升级到5.1的同时开始使用推送通知。由于推送通知不能在模拟器中工作,因此模拟器会返回NSError。搞砸了很长时间,花了几个小时试图调试这个问题。

1 个答案:

答案 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,因为他们没有被抛出。只抛出异常。