2010-09-10 5 views
1

Je ne faisais que le codage des trucs plus pour la fenêtre des préférences dans mon application, et je le lance, je reçois cette erreur suivante: 2010-09-09 20:01:08.099 YM2612[12060:80f] An uncaught exception was raisedplantages aléatoires de mon application

2010-09-09 20:01:08.102 YM2612[12060:80f] Cannot create BOOL from object <_NSControllerObjectProxy: 0x34cd30> of class _NSControllerObjectProxy

2010-09-09 20:01:08.105 YM2612[12060:80f] *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Cannot create BOOL from object

<_NSControllerObjectProxy: 0x34cd30> of class _NSControllerObjectProxy'

*** Call stack at first throw:

(

0 CoreFoundation      0x90d9ebba __raiseError + 410 

1 libobjc.A.dylib      0x93aab509 objc_exception_throw + 56 

2 CoreFoundation      0x90d9e8e8 +[NSException raise:format:arguments:] + 136 

3 AppKit        0x925ae0ed _NSHandleBindingException + 108 

4 AppKit        0x91ff0652 _NSBoolFromValue + 490 

5 AppKit        0x920f226f -[_NSCheckBoxPlugin showValue:inObject:] + 144 

6 AppKit        0x91fbdb69 -[NSValueBinder showValue:inObject:] + 384 

7 AppKit        0x91fbd5b9 -[NSValueBinder _adjustObject:mode:observedController:observedKeyPath:context:editableState:adjustState:] + 906 

8 AppKit        0x91fbd1af -[NSValueBinder _observeValueForKeyPath:ofObject:context:] + 280 

9 AppKit        0x91f379ad -[NSBinder _performConnectionEstablishedRefresh] + 85 

10 AppKit        0x91f2a0b8 -[NSObject(NSKeyValueBindingCreation) bind:toObject:withKeyPath:options:] + 721 

11 AppKit        0x91fd6003 -[NSNibBindingConnector establishConnection] + 156 

12 AppKit        0x91f053f3 -[NSIBObjectData nibInstantiateWithOwner:topLevelObjects:] + 1249 

13 AppKit        0x91f03508 loadNib + 257 

14 AppKit        0x91f02900 +[NSBundle(NSNibLoading) _loadNibFile:nameTable:withZone:ownerBundle:] + 228 

15 AppKit        0x91f02811 +[NSBundle(NSNibLoading) loadNibFile:externalNameTable:withZone:] + 158 

16 AppKit        0x91f0275c +[NSBundle(NSNibLoading) loadNibNamed:owner:] + 383 

17 AppKit        0x91eff561 NSApplicationMain + 434 

18 YM2612        0x00002844 main + 30 

19 YM2612        0x000027fa start + 54 

)

Répondre

5

Lire le message que vous avez:

2010-09-09 20:01:08.102 YM2612[12060:80f] Cannot create BOOL from object <_NSControllerObjectProxy: 0x34cd30> of class _NSControllerObjectProxy 

Cette chose ne peut pas être converti en un BOOL. En guise d'estimation, il s'agit du selection d'un contrôleur d'objet, qui est un proxy, comme l'indique le nom de classe de cet objet. Alors pourquoi quelque chose tente-t-il de le convertir en BOOL? Pour cela, vous regardez dans la trace de la pile:

4 AppKit        0x91ff0652 _NSBoolFromValue + 490 
5 AppKit        0x920f226f -[_NSCheckBoxPlugin showValue:inObject:] + 144 
6 AppKit        0x91fbdb69 -[NSValueBinder showValue:inObject:] + 384 
7 AppKit        0x91fbd5b9 -[NSValueBinder _adjustObject:mode:observedController:observedKeyPath:context:editableState:adjustState:] + 906 
8 AppKit        0x91fbd1af -[NSValueBinder _observeValueForKeyPath:ofObject:context:] + 280 
9 AppKit        0x91f379ad -[NSBinder _performConnectionEstablishedRefresh] + 85 
10 AppKit        0x91f2a0b8 -[NSObject(NSKeyValueBindingCreation) bind:toObject:withKeyPath:options:] + 721 
11 AppKit        0x91fd6003 -[NSNibBindingConnector establishConnection] + 156 
12 AppKit        0x91f053f3 -[NSIBObjectData nibInstantiateWithOwner:topLevelObjects:] + 1249 

Vous chargez une plume, et, dans le cadre de cela, il est un accrochage vous liant situé dans IB. Par conséquent, vous avez lié une propriété qui requiert un BOOL à une propriété dont la valeur ne peut pas être convertie en BOOL. Vous devez regarder dans la plume (que la proximité de l'image 16 à l'image 17 suggère MainMenu.nib) pour voir quelles propriétés booléennes vous liez, et à quoi vous les liez, et liez celle qui est liée à selection d'un contrôleur à quelque chose Cela a plus de sens.

Peut-être que vous vouliez vous lier au selectedObjects du contrôleur (qui est un tableau, plutôt qu'un objet proxy) avec @count comme chemin de clé de modèle?

Les liaisons auxquelles vous avez le plus de chances d'avoir une valeur booléenne sont enabled et editable de tout contrôle (bouton, champ de texte, curseur, etc.). Mais, ils ne sont pas les seuls, vous aurez donc besoin de regarder chaque objet qui a une liaison que vous avez lié, surtout si des liaisons que vous avez branchées ne sont pas les coupables.

+0

Mon journal a mentionné quelque chose à propos d'un état caché. Effectivement, l'un de mes points de vue avait en quelque sorte eu leur propriété cachée liée à l'objet géré d'un contrôleur. – ArtOfWarfare

Questions connexes