Object immer nil - warum?

  • Object immer nil - warum?

    ich weiß nicht mehr, wo ich noch gucken soll bzw. was ich falsch mache.

    mein "zbericht" ist immer nil - warum? selbst ich zeile 2 benutze - keine änderung.

    wenn es keine daten enthalten würde, könnte ich ja noch im model suchen, aber ich habe einen breakpoint in zeile 4 und da ist "zbericht" nil.

    C-Quellcode

    1. Model *model = [[Model alloc] init];
    2. // ZBericht *zbericht = [[ZBericht alloc] initWithPrimaryKey:datenSatzID];
    3. ZBericht *zbericht = [model leseZBericht:datenSatzID];

    Bildschirmfoto 2015-09-08 um 20.41.19.png

    wo liegt mein fehler?
  • datenSatzID bekommt seinen wert vom vorherigen controller. Ist richtig gesetzt auf 1, kann man am unteren Rand des Bildes gerade noch sehen.

    Am breakpoint im Model vorm Return hat das dortige object die richtigen Daten. Also gehe ich davon aus, das das Model das richtige liefert. Wie könnte ich das prüfen?
  • was passiert da überhaupt oder was soll da passieren?

    datenSatzID ? sollte das nicht self.datenSatzID sein? oder wie hast du das deklariert?

    bastl schrieb:

    [model leseZBericht:datenSatzID]
    und dann solltest du dir mal die Konventionen anschauen wie man Sachen benennt

    Klassenname Model ist wenn es keine App für Playboy oder Penthouse ist, ein äußerst schlechter Name für eine Klasse
    genau so der Methodenname, da wäre wohl readReportWithID: bzw reportWithID:

    und anstelle vom Screenshot solltest du hier eher Code posten
    Ich weiß nicht immer wovon ich rede aber ich weiß das ich Recht habe. :saint:
  • Wird zBericht denn in der leseZBericht-Methode erzeugt und die Ownership an den Aufrufenden übergeben? So habe ich den Eindruck, dass Du ein Objekt zuweist, das schon wieder freigegeben wurde.

    @nussratte: Der Screenshot für die Debug-Ausgabe ist doch okay und Code-Tags wurden benutzt... Locker bleiben ;)

    Mattes
    Diese Seite bleibt aus technischen Gründen unbedruckt.
  • Auf den ersten Blick: -leseZBericht: (übrigens ein sehr nichtssagender Name – wie soll man daran erkennen, das da was zurück kommen soll?) gibt immer nil zurück.
    Warum weiß nur die Methode. Oder das, worauf die Methode zugreifen will.
    «Applejack» "Don't you use your fancy mathematics to muddle the issue!"

    Iä-86! Iä-64! Awavauatsh fthagn!

    kmr schrieb:

    Ach, Du bist auch so ein leichtgläubiger Zeitgenosse, der alles glaubt, was irgendwelche Typen vor sich hin brabbeln. :-P
  • Das wird sicher so sein.
    Nicht jeder, der den Code nachher liest, kennt sich zwangsläufig auch mit Kassensystemen aus.

    Der Knackpunkt ist halt: -leseZBericht ist eine Anweisung zur Delegation. Und müsste (wenn schon auf Deutsch) auf Grund des Imperativs auch noch -liesZBericht heißen…
    Das bedeutet gemäß der gültigen Namensstandards, dass Dein Modell angewiesen wird den Tagesabschlussbericht zu lesen. Da erwarte ich keine Rückmeldung außer höchstens ein 'Ausgeführt!' bzw. 'Ging nicht…'

    Du möchtest aber einen Tagesabschlussbericht haben.
    Insofern wäre es sinnvoller, das Ding hieße'-gibZBericht' oder einfach nur '-zBericht' oder bestenfalls '-dayEndClosing'
    «Applejack» "Don't you use your fancy mathematics to muddle the issue!"

    Iä-86! Iä-64! Awavauatsh fthagn!

    kmr schrieb:

    Ach, Du bist auch so ein leichtgläubiger Zeitgenosse, der alles glaubt, was irgendwelche Typen vor sich hin brabbeln. :-P