如何编写一个If语句,来比较核心数据的属性值?

时间:2009-10-26 18:25:06

标签: iphone objective-c syntax core-data

我是一个客观的新人。

我试图比较核心数据实体属性值并且遇到语法问题。 我只想知道编写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) {

3 个答案:

答案 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