我是一个客观的新人。
我试图比较核心数据实体属性值并且遇到语法问题。 我只想知道编写if语句以比较值的最佳方法。
在这个例子中,someAttribute属性是一个布尔值,默认为NO。
NSString *myValue = [NSString stringWithFormat:@"%@", myObject.someAttribute];
if ([myValue isEqualToString:@"1"]) {
// do something
} else {
// do something else
}
这是正确的方法吗?我尝试了其他口味,如下所示,但结果并不准确:
if (myObject.someAttribute == 1) {
if (myObject.someAttribute) {
答案 0 :(得分:6)
如果您查看此实体的生成标头,则很可能该属性的实际类型不是BOOL
,而是NSNumber
,这是Cocoa将数字类型框入对象的方式。假设我是对的,你可以试试:
if ([myObject.someAttribute boolValue]) { ... }
答案 1 :(得分:1)
如果您的属性是BOOL类型,则此代码可以正常运行
if(myObject.someAttribyte){ //so smth if someAttribute is YES }
答案 2 :(得分:0)
您无法将BOOL直接转换为字符串。
谓词是比较CoreData值的首选方法。它开始时更复杂,但从长远来看效果更好。见NSPredicate programming guide