0

我通过引用我在网上找到的一些代码传递了一个错误。错误以空对象的形式返回,这意味着没有错误。

如果我检查error.code我的访问权限不正确,因为对象是空的。

如果我检查error == nil我得到一个错误,因为error它是一个空对象。

如何使用逻辑来发现错误存在,但为空?

4

1 回答 1

7

错误通常是类型NSError或其子类。它们在以这种方式声明的方法中作为引用传递:

-(void)DoSomeStuff:(NSError **)error;

因此,当您调用一个需要您传递对 a 的引用的方法时,您可以NSError这样调用它:

NSError *error = nil;
[self DoSomeStuff:&error];

当这个方法完成它的工作时,你检查错误对象是否真的填充了一些东西:

if(error)
{
   //Do some stuff if there is an error.
   //To see the human readable description you can:
   NSLog(@"The error was: %@", [error localizedDescription]);
   //To see the error code you do:
   NSLog(@"The error code: %d", error.code);
}
else //There is no error you proceed as normal
{
  //Do some other stuff - no error
}

PS 如果您没有收到错误并且该方法未按预期运行,则此方法的实现存在问题。特别是如果它是开源的东西,很容易出现编码错误,因此您可以查看该方法的作用,调试甚至修复错误...

于 2012-06-04T17:30:27.150 回答