【问题标题】:How to catch NSError instance thrown in iOS simulator如何捕获 iOS 模拟器中抛出的 NSError 实例
【发布时间】:2014-03-27 06:46:35
【问题描述】:

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

谁能解释它是什么以及我如何处理NSError 并理解它?

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

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

更新 2:这是我的困惑的结果。我曾假设升级到 Xcode 5.1 后引发了 NSError,并认为这是一些错误。原因是我在升级到 5.1 的同时开始使用推送通知。由于推送通知在模拟器中不起作用,因此模拟器正在返回 NSError。把它搞砸了,花了好几个小时试图调试这个问题。

【问题讨论】:

  • 当我运行模拟器时,我在控制台中得到类似 '#<0xd68beb0>

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


【解决方案1】:

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

【讨论】:

  • 这里发生的事情是,当我运行模拟器时,我的控制台中会出现类似“#<0xd68beb0>
猜你喜欢
  • 2020-02-15
  • 1970-01-01
  • 2016-02-18
  • 1970-01-01
  • 1970-01-01
  • 2020-08-09
  • 2021-10-14
  • 1970-01-01
  • 2011-03-27
相关资源
最近更新 更多