deze klasse is niet compatibel met sleutelwaardecodering voor de sleutelweergave

ik ben erg nieuw in xcode… een gemaakte app (eenvoudige rekenmachine) werkt redelijk goed (op simulator en apparaat).
Wanneer ik de hoofdinterface instel in de samenvattingopties van Target, krijg ik de volgende foutmelding bij het starten van de simulator:

2012-04-14 12:17:27.123 CalcTest[27550:f803] *Beëindiging van app verschuldigd
naar niet-afgevangen uitzondering ‘NSUnknownKeyException’,

reden:
[<UIApplication 0x6a14650> setValue:forUndefinedKey:]: deze klasse is
niet compatibel met sleutelwaardecodering voor de key calculatorScreen.’

*Eerste aanroepstack: (0x12db022 0x18f8cd6 0x12daee1 0xcc2022 0xc33f6b 0xc33edb 0xc4ed50 0x53671a 0x12dcdea 0x12467f1 0x53526e
0x536eb7 0x313ce1 0x313ff8 0x31317f 0x322183 0x322c38 0x316634
0x27fcef5 0x12af195 0x1213ff2 0x12128da 0x1211d84 0x1211c9b 0x312c65
0x314626 0x1bad 0x1b15 0x1) beëindigen genoemd gooien an
uitzondering(lldb)

om het probleem te vinden, ben ik een nieuw, op weergave gebaseerd project begonnen.

Voer het lege nieuwe project uit op de simulator –>works,

Maar als ik de hoofdinterface instel op ViewController, in de samenvatting–>de Simulator crasht met

2012-04-14 12:11:17.492 crash[27494:f803] *Beëindiging van app wegens niet-afgevangen
uitzondering ‘NSUnknownKeyException’, reden:

[<UIApplication 0x6a6f4b0> setValue:forUndefinedKey:]: deze klasse is
niet compatibel met sleutelwaardecodering voor de sleutelweergave.’
*First throw call-stack:

(0x13c7022 0x1558cd6 0x13c6ee1 0x9bf022 0x930f6b 0x930edb 0x94bd50
0x23371a 0x13c8dea 0x13327f1 0x23226e 0x233eb7 0x10ce1 0x10ff8 0x1017f
0x1f183 0x1fc38 0x13634 0x12b1ef5 0x139b195 0x12ffff2 0x12fe8da
0x12fdd84 0x12fdc9b 0xfc65 0x11626 0x1d4d 0x1cb5) beëindigen gebeld
een uitzondering gooien

is er een oplossing voor het probleem?


Antwoord 1, autoriteit 100%

Als je een besturingselement in je nib (xib-bestand) hebt dat is gekoppeld aan een eigenschap (IBOutlet) of methode (IBAction) in je viewcontroller, en je hebt de eigenschap of methode verwijderd of hernoemd, dan kan de runtime’ kan het niet vinden omdat het een andere naam heeft gekregen en daarom crasht.

In jouw geval heb je de eigenschap Main Interface van het project ingesteld op je ViewController.nib. Dit is een probleem omdat de enige penpunten die als hoofdinterface moeten worden gebruikt, UIWindows moeten hebben en de bestandseigenaar in die penpunt moet worden ingesteld op de AppDelegate. Het UIWindow in de penpunt moet worden gekoppeld aan de eigenschap File Owner’s (AppDelegate) venster. Omdat je dat instelt met een punt zonder de eigenschappen waarnaar de runtime op zoek was, krijg je deze fout.

De oplossing is om de hoofdinterface leeg te laten, aangezien u UIWindows niet meer handmatig hoeft in te stellen.


Antwoord 2, autoriteit 13%

Ik had net hetzelfde probleem en heb het opgelost door met de rechtermuisknop te Control-klikken op de besturing in het xib-bestand om te zien waar naar Outlets wordt verwezen. Het bleek dat een deel van het besturingselement nog steeds naar een oudere naam verwijst en deze fout veroorzaakte.


Antwoord 3, autoriteit 7%

als u een bericht krijgt dat lijkt op:

  • Beëindiging van app vanwege niet-afgevangen uitzondering ‘NSUnknownKeyException’, reden:

‘[ setValue:forUndefinedKey:]: deze klasse is niet compatibel met sleutelwaardecodering voor de sleutel

klik op toevoegen (+) in de linkerbenedenhoek van het BreakPoint-navigatiegebied, kies ‘add Exception Breakpoint’, aangezien het crasht vanwege ‘NSUnknownKeyException’, en kies voor ‘All’. Voer het programma uit. Het programma stopt bij de eerste uitzondering.


Antwoord 4, autoriteit 5%

probeer dit, selecteer Bestandseigenaar en klik vervolgens op “Connection Inspector” (bovenaan in de rechterbovenhoek), u ziet alle verkooppunten. Zoek naar een dergelijk bordje (!) je vindt het op de kleine cirkel die een ontbrekend stopcontactaangeeft, het enige wat je hoeft te doen is het goed te koppelen of het stopcontact te verwijderen.


Antwoord 5, autoriteit 4%

Probeer dit,

Ga naar Target=>Build Phases=>Compile Sources

Vermeld dan ‘calculatorScreen.m’


Antwoord 6, autoriteit 2%

Ik was tegenover hetzelfde probleem. In mijn geval had ik het tekstlabel hernoemd in .h-bestand. Er was dus meerdere referentie voor dat label in mijn hoofd-bestanden. Zodra ik de oude referentie heb verwijderd, begon mijn code te werken.


Antwoord 7

Controleer uw doellidmaatschap
Selecteer de eerste optie. Dit kan helpen bij anderen

Other episodes