Wo steckt der Fehler in meiner App ?

  • Wo steckt der Fehler in meiner App ?

    Hallo,
    ich habe mich vor einigen Wochen in die Xcode4 IDE gestürtzt. Ich dachte, Java wäre eine gute Grundlage für das Ganze, was auch stimmt, nur habe ich unter Windows Zeiten nichts mit C++ o.ä zutun gehabt und es ist schon ein großes Stück anders als Java ;)
    Ich habe nun ein bisschen mit Objective C rumgespielt, Buttons erstellt, Textfelder abgefragt. Aber mein Programm funktioniert nicht mehr :D
    Ich habe 2 Textfelder, 4 Labels( 2 sind unsichtbar, da sie erst nötig sind, nach der Texteingabe) und einen Button. Beim drücken auf den Button werden die Inhalte der Textfelder abgefragt, in Variablen gespeichert und verarbeitet. Der Textinhalt von dem Namenfeld, wir durch ein Hallo ergänzt, damit eine Begrüßung herauskommt, der Inhalt von Textfeld 2 soll mit einem Zeichenkettenwert verglichen werden. Falls sie übereinstimmen soll eine entsprechende Ausgabe geschehen. Ich hänge hier ein Screenshot an und poste hier drunter den Code incl. Template.

    Die Header Datei "Abfrage"

    Quellcode

    1. //
    2. // Abfrage.h
    3. // Abfrage
    4. //
    5. // Created by // on 06.04.11. // Copyright 2011 Felix Klein Gymnasium. All rights reserved.
    6. //
    7. #import
    8. @interface Abfrage : NSObject {
    9. @private
    10. IBOutlet id abfragename;
    11. IBOutlet id abfragepasswort;
    12. IBOutlet id ausgabename;
    13. IBOutlet id ausgabecheck;
    14. }
    15. -(IBAction)bestaetigung:(id)bestaetigen;
    16. @end
    Alles anzeigen


    Und dann die .m Datei:

    Quellcode

    1. //
    2. // Abfrage.m
    3. // Abfrage
    4. //
    5. // Created by // on 06.04.11. // Copyright 2011 Felix Klein Gymnasium. All rights reserved.
    6. //
    7. #import "Abfrage.h"
    8. NSString *name;
    9. NSString *passwort;
    10. NSString *ausgabetext=@"Hallo ";
    11. @implementation Abfrage
    12. - (id)init
    13. {
    14. self = [super init];
    15. if (self) {
    16. }
    17. return self; }
    18. -(IBAction)bestaetigung:(id)bestaetigen{name = [abfragename stringValue];passwort=[abfragepasswort stringValue];
    19. ausgabetext= [ausgabetext stringByAppendingString:name ];
    20. ausgabetext = [ausgabetext stringByAppendingString:@"!"];
    21. [ausgabename setStringValue:(ausgabetext)];
    22. if(passwort == @"abc")
    23. {
    24. [ausgabecheck setValue:@"Richtiges Passwort"];
    25. }else {
    26. [ausgabecheck setValue:@"Falsches Passwort"];
    27. }
    28. }
    29. - (void)dealloc
    30. {
    31. [super dealloc]; }
    32. @end
    Alles anzeigen


    Screenshot vom IB:

    yfrog.com/j5bildschirmfoto20110406uj

    Es könnte sein, das einige Zeilen nicht ganz richtig sitzen, da ich es selbst mit der Enter Taste positionieren musste. Per Copy-Paste hat dieses TextFenster den Code in 4 Zeilen hintereinander geschmissen...

    Falls ihr mir irgendetwas dazu sagen könntet, was mir hilft, wäre ich sehr dankbar!
    PS: Gibt es die Quelltextschrift auch in farbig?


    MfG Christian
  • KaboomProjeXs schrieb:

    Zuerst: Bitte nutze das Uploadtool von der Seite selbst um bilder hochzuladen.

    Dann: Welchen Fehler bekommst du? Und wo?



    Das Upoad Tool von der Seite habe ich nicht genutzt, da ich die Datei sonst hätte verkleinern müssen. Und weil ichs unnötig fand, hab ichs anders gemacht ;)

    Ich bekomme die Fehlermeldung:
    2011-04-06 18:13:03.639 Abfrage[60441:903] -[NSTextField setValue:]: unrecognized selector sent to instance 0x10012d600

    2011-04-06 18:13:03.690 Abfrage[60441:903] Exception detected while handling key input.

    2011-04-06 18:13:03.691 Abfrage[60441:903] -[NSTextField setValue:]: unrecognized selector sent to instance 0x10012d600

    Zudem erscheint halt nicht die gewünschte Bestätigung, das das Passwort stimmt..
  • macmoonshine schrieb:

    KaboomProjeXs schrieb:

    Da sind mehrere fehler drinnen...was mir noch aufgefallen ist:

    Quellcode

    1. [ausgabename setStringValue:(ausgabetext)];


    was machen da die klammern?

    Das sieht nur komisch aus, ist aber kein Fehler. ;)


    Als ich da setStr geschrieben hatte, hat er mir die Klammern vorgeschlagen :D

    nitromethan schrieb:

    Statt name = würde ich mal [name isEqualToString:abfragename] probieren

    Das verstehe ich nicht. Ich vergleiche doch nirgends diese beiden Strings...warum also ein Vergleich?
    Nennt sich "isEqualToString" auch Vergleichsoperator?
    Ich habe versucht diesen mal bei der ifAbfrage einzusetzen. Ohne Erfolg, es gab eine Fehlermeldung.

    Die Fehlermeldung verweist ja auf den setStringValue part aber was ist dort falsch?
  • joopy schrieb:

    Das verstehe ich nicht. Ich vergleiche doch nirgends diese beiden Strings...warum also ein Vergleich?
    Nennt sich "isEqualToString" auch Vergleichsoperator?
    Ich habe versucht diesen mal bei der ifAbfrage einzusetzen. Ohne Erfolg, es gab eine Fehlermeldung.

    Die Fehlermeldung verweist ja auf den setStringValue part aber was ist dort falsch?

    Statt:

    Quellcode

    1. if(passwort == @"abc")


    das hier:

    Quellcode

    1. if([passwort isEqualToString:@"abc"])
    -Carpe Diem-
  • KaboomProjeXs schrieb:

    macmoonshine schrieb:

    Das sieht nur komisch aus, ist aber kein Fehler.

    So etwas hab ich noch nie gesehen^^

    Auf jeden fall glaube ich auch, dass irgendeine ib verbindung nicht richtig ist...bei den ganzen ids hast du sicher was vertauscht ;)

    Weil ein

    Quellcode

    1. [NSTextField setValue:...]
    sollte

    Quellcode

    1. [NSTextField setStringValue:...]
    heißen



    Mist! Das hatte ich total überlesen :O Tut mir Leid. Mein Problem ist geklärt, wobei das mit dem isEqualTo trotzdem ne sinvolle Information war.
    Danke euch allen für eure schnelle Hilfe!
  • Andere Frage

    Halloo,
    ich habe mich gefragt, was sinvoller ist- einen neuen Thread zu Eröffnen oder kurz hier zu fragen.
    Ich frage hier ;)
    Eigentlich ist es eine simple Sache.
    Bei Java hatten alle Buttons eigene Namen, aber da musste ich sie auch mit diesem ansprechen. Aber ich finde einfach die Button Namen nicht bzw weiß nicht, wie ich Bezug auf den Button nehmen kann... Ich würde den Button gerne nach richtiger Eingabe des Passworts sichtbar machen.
    Geht das mit Befehlen wie setVisible oder visible = True o.ä ?
  • eigentlch sollte es

    [buttonName setHidden:YES]

    heissen. Ich würde mich an Deiner Stelle erst einmal mit der Objective-C Syntax beschäftigen. Das hat mit Java nämlich so ziemlich gar nichts mehr zu tun.

    Gruß

    Claus
    2 Stunden Try & Error erspart 10 Minuten Handbuchlesen.

    Pre-Kaffee-Posts sind mit Vorsicht zu geniessen :)