Objective c iOS ARC:或ManagedObject指针上的运算符
我使用的是Objective c iOS ARC:或ManagedObject指针上的运算符,objective-c,ios,ios5,Objective C,Ios,Ios5,我使用的是NSManagedObjects,我想返回任务的预算或任务类别的预算 但是,该方法给出了错误: Implicit conversion of int to Budget * is disallowed with ARC. 这是怎么回事 @implementation Task @dynamic category; @dynamic budget; - (Budget *)budgetOrCategoryBudget { return [self budget] || [[
NSManagedObjects
,我想返回任务的预算或任务类别的预算
但是,该方法给出了错误:
Implicit conversion of int to Budget * is disallowed with ARC.
这是怎么回事
@implementation Task
@dynamic category;
@dynamic budget;
- (Budget *)budgetOrCategoryBudget {
return [self budget] || [[self category] budget];
}
| |
是一种运算符,它接受两个对象或基本体,如果其中至少有一个值为非零(如果是对象)或非零(如果是基本体),则返回TRUE
,否则返回FALSE
。在Objective-C中,布尔实际上是一个int,其中FALSE
是0
,TRUE
是任何非零的值。因此,您实际上返回了一个BOOL(用int表示),其中编译器期望预算*
如果您想实际返回两个预算中的一个,您必须提供一些其他方法在它们之间进行选择。
返回任何东西| |某些东西
将返回一个布尔值,托管对象类将其转换为1或0。如果要返回[self budget]或[self category]budget],请编写某种If语句:
if(condition){
return [self budget];
}else{
return [[self category] budget];
}
使用
或者更好
return ([self budget] != nil) ? [self budget] : [[self category] budget];
(假设您的意图是返回
[self-category]budget]
(如果存在),否则[[self-category]budget]
)Clang也支持语法[self-budget]?:[[self-category]budget]
(省略的第二个术语与条件具有相同的值)。
return ([self budget] != nil) ? [self budget] : [[self category] budget];