2009-07-02 7 views
10

J'utilise KVC pour itérer à travers quelques vues. Ayant du mal à définir les propriétés booléennes:Comment finaliser un BOOL pour KVC dans Cocoa/Obj-C?

[self setValue:YES forKeyPath:[NSString stringWithFormat:@"myView%d.userInteractionEnabled", n]]; 

Je reçois: avertissement: Argument 1 passant de 'setValue: forKeyPath:' un entier en pointeur sans plâtre.

Il n'y a pas de [valeur NSValueWithBool: YES] ou similaire que je peux trouver.

Que faire?

Répondre

29

Le compilateur génère un avertissement car le premier argument de -setValue:forKeyPath: attend et objet. OUI n'est pas un objet.

La réponse est là, dans "NSValue.h":

[NSNumber numberWithBool: aBool]

Les versions ultérieures de Xcode vous permettent d'utiliser la syntaxe littérale:

[foo setValue:@YES forKey:@"bar"]

1

Vous pouvez également utiliser Expression littérale @ (YES)

Pour plus d'informations llvm Objective-C Literals

+2

Parenthèses sont disponibles en option, '@ YES' fonctionne très bien –

Questions connexes