2010-08-28 6 views
2

J'ai un managedObject avec un attribut qui est un booléen. J'ai besoin de comparer la valeur de ceci et puis cacher un bouton si nécessaire.Cette comparaison booléenne est-elle correcte?

Il y a quelques mises en garde, d'abord le booléen isBookmarkHidden peut être défini et remplacera la propriété du managedObject donc le bouton est caché indépendamment. Si ce booléen est NON, il utilisera alors ManagedObject.

est ici l'extrait de code qui est juste dans la méthode viewDidLoad ...

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

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

Peu importe comment j'écrire ce code, il ne semble pas fonctionner. Des idées?

Répondre

8

Non, ce n'est pas correct.

valueForKey: renvoie un objet, et lorsqu'il s'agit d'un attribut booléen, il s'agit d'un NSNumber. Il doit donc être:

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

Voir aussi: http://www.techotopia.com/index.php/Objective-C_Operators_and_Expressions#Boolean_Logical_Operators – Douglas

+0

merci beaucoup pour votre réponse. Fonctionne un régal. –

Questions connexes