2010-08-28 111 views
2

我有這是一個布爾值屬性的managedObject。我需要比較這個值,然後隱藏一個按鈕,如果需要的話。這是布爾比較正確的嗎?

有一個警告夫婦,首先isBookmarkHidden布爾可設置等按鈕被隱藏,無論將覆蓋managedObject的財產。如果這個布爾值是NO,它將使用ManagedObject。

下面的代碼片段是剛剛在viewDidLoad方法...

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

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

不管我怎麼寫這個代碼似乎並沒有工作。有任何想法嗎?

回答

8

不,那是不正確的。

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