这是布尔比较正确的吗?

问题描述:

我有这是一个布尔值属性的managedObject。我需要比较这个值,然后隐藏一个按钮,如果需要的话。这是布尔比较正确的吗?

有一个警告夫妇,首先isBookmarkHidden布尔可设置等按钮被隐藏,无论将覆盖managedObject的财产。如果这个布尔值是NO,它将使用ManagedObject。

下面的代码片段是刚刚在viewDidLoad方法...

BOOL shouldHideBookmark = (int)[[managedObject valueForKey:@"isBookmarked"] description]; 

bookmarkButton.hidden = isBookmarkHidden == YES? YES : shouldHideBookmark == YES? YES : NO; 

不管我怎么写这个代码似乎并没有工作。有任何想法吗?

不,那是不正确的。

valueForKey:返回一个对象,当它是一个布尔属性时,它是一个NSNumber。因此,它应该是:

BOOL shouldHideBookmark = [[managedObject valueForKey:@"isBookmarked"] boolValue]; 
bookmarkButton.hidden = (shouldHideBookmark || isBookmarkHidden); 
+0

参见:http://www.techotopia.com/index.php/Objective-C_Operators_and_Expressions#Boolean_Logical_Operators – Douglas 2010-08-28 15:37:51

+0

非常感谢您的答复。作品一种享受。 – 2010-08-30 11:06:06