iOS ARC:ManagedObject指针上的OR运算符

ktu*_*nio 0 objective-c ios ios5

我正在与之合作NSManagedObjects,我想要返回任务的预算或任务类别的预算.

但是,该方法给出了错误:

Implicit conversion of int to Budget * is disallowed with ARC.
Run Code Online (Sandbox Code Playgroud)

这里发生了什么?

@implementation Task

@dynamic category;
@dynamic budget;

- (Budget *)budgetOrCategoryBudget {
    return [self budget] || [[self category] budget];
}
Run Code Online (Sandbox Code Playgroud)

Eth*_*ser 5

||是一个运算符,它接受两个对象或基元,并且TRUE如果至少有一个值是非零(如果是对象)或非零(如果是基元),FALSE则返回.在Objective-C BOOL其实是int,这里FALSE0TRUE是什么非零.所以你实际上是在返回编译器所期望的BOOL(由int表示)Budget *.

如果您想实际返回两个预算中的一个,则必须提供一些其他方法来选择它们.