Это булево сравнение правильно? - PullRequest
2 голосов
/ 28 августа 2010

У меня есть управляемый объект с атрибутом, который является логическим.Мне нужно сравнить это значение, а затем при необходимости скрыть кнопку.

Существует несколько предостережений, во-первых, можно установить логическое значение isBookmarkHidden, которое переопределит свойство managedObject, поэтому кнопка будет скрыта независимо от этого.Если это логическое значение NO, оно будет использовать ManagedObject.

Вот фрагмент кода, который находится только в методе viewDidLoad ...

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

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

Независимо от того, как я пишу этот код, он нене похоже на работу.Есть идеи?

1 Ответ

8 голосов
/ 28 августа 2010

Нет, это не правильно.

valueForKey: возвращает объект, а когда это логический атрибут, это NSNumber.Так и должно быть:

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