是否有方便的方法从方法中获得两个不同的"类似nil"可能的返回值?

Wil*_*sch 1 iphone null cocoa-touch ios

有问题的方法(实际上是多态实现的递归搜索方法族)返回指向某种类型对象的指针.在失败的情况下我一直没有回来.现在我想要有两种不同的失败.实现它的最简单方法是什么?

Sam*_*hie 7

执行此操作的最佳方法是保留return nil;,但将错误指针作为函数参数之一.这样,您可以发送错误,然后检查它的值以查看发生的情况.您的函数仍将运行,但您可以控制返回的内容.

举个例子,这是我用来保存managedObjectContext的一些代码:

NSManagedObjectContext *moc = [self managedObjectContext];

NSError *error;
if (![moc save:&error]) {
    NSString *description = [error localizeDescription];
            NSInteger code = [error code];
}
Run Code Online (Sandbox Code Playgroud)

我已经调整了块的内部,以显示从错误中提取信息的几种方法.对您而言,最好使用简单的错误代码来区分不同的nil值.

这是一个代码示例(虽然可能不是最好的方法,因为您必须重复代码来解释错误消息):

-(id) functionCall:(NSError *)error {
    ...
    if (nilCondition) {

        if (firstNilCondition) {
            [error setCode:1];
        }
        if (firstNilCondition) {
            [error setCode:2];
        }

        return nil;
    }
}
Run Code Online (Sandbox Code Playgroud)