Daten übertragen in ander Klasse

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Michael schrieb:

    Und mal grundsätzlich: Klassen werden nicht aufgerufen, sondern man erstellt Instanzen einer Klasse und arbeitet mit den Instanzen. Es kann auch mehr als eine Instanz einer Klasse geben.

    Und häufig ist dann auch die unsaubere Verwendungen der Begriffe die Ursache für solche Verständnisprobleme.

    Svennse schrieb:

    irgendwie habe ich das Gefühl je mehr Bücher ich lese und je mehr Tutorials ich anschaue umso verwirrter bin ich

    Das ist dann spätestens der Zeitpunkt, an dem Tutorials nichts mehr bringen. Du solltest lieber mal ein paar Tage damit verbringen, dir Grundlagenwissen durch Lesen anzueignen.
    „Meine Komplikation hatte eine Komplikation.“
  • Michael schrieb:

    Ich habe dir hier bereits die Lösung hin geschrieben. Übergebe die Werte der Instanz im xib, also dem GrundrasterView. Alternativ kannst du natürlich auch die Instanz im xib komplett löschen und in der transfer: Methode eine neue Instanz erstellen (dann aber mit initWithFrame:) und diese dann mit addSubview: in die View Hierarchie einsetzen.


    Mallo Michael,
    ich sehe schon, es gibt noch sehr sehr viel zu lernen für mich…...

    ich habe mal deine Lösung umgesetzt…..
    ich denke dir hat noch eine kleine info gefehlt:

    Quellcode

    1. @interface DatenweiterleitungViewController : UIViewController {
    2. IBOutlet UITextField *eingabelaenge;
    3. IBOutlet UITextField *eingabebreite;
    4. IBOutlet UILabel *ausgabelaenge;
    5. IBOutlet UILabel *ausgabebreite;
    6. IBOutlet UIView *grundrasterView;
    7. ….


    steht im View.Controller.h

    denn nun erhalte ich mehrere Fehler im Compiler. "request for member 'breite' in something not a structure or union" auch bei GrundrasterView.laenge kommt dieser Fehler.


    So langsam denke ich der bessere Ansatz ist Dein Vorschlag mit einer [initWithFrame…….]

    Ich weiß auch was Du gemeint hast mit den unterschiedlichen Instanzen, denn bei jeder Instanz ein Klasse können ja die Variablen unterschiedliche werte haben in der jeweiligen Instanz und ich denke da ist ja auch mein Problem das ich in der Aktion der Variablen "Messestand.laenge" einen Wert zuweise aber wenn das GrundrasterView aufgerufen wird und damit eine Instanz der Class Messestand gestartet wird die Variablen "länge, breite" quasi neu initialisiert werden und somit erklärt warm diese (null) sind. Wie man ja im Log sieht.
    Deswegen funzt ja auch alles wenn ich in der plist ein #define laenge, breite mit festen Werten angebe. Beim Compalieren werden ja bei jeder Verwendung dieser Variablen diese durch den Wert ausgetauscht.
    Wenn Dich alles verlässt kommt das allein sein.
    Wenn Du alles verlässt kommt die Einsamkeit.
  • gandhi schrieb:

    Thallius schrieb:

    Sehr schlechtes beispiel: Kunden-id ist natürlich customerId und benutzerkennung ist userId

    Ne, sehr gutes Beispiel! Für Dich ist das klar, ich denke mir da aber "loginName" und "customerID". Der nächste wiederum tut's mit "login" und "userName" übersetzen. Und schon hat man drei verschiedene Ausdrücke für die gleiche Property.

    Mir ist z.B. mal ein "Tendenzbetrieb" über den Weg gelaufen. Da wird's mit englischer Übersetzung ganz mau.

    Was spricht gegen die Verwendung von deutsch? Du sollst doch klar verständlichen Code schreiben und keine tolle englische Prosa. Und wenn nach einigen Jahren irgendjemand das Zeug anpassen/warten muss, dann muss er bei "objekt.getUserID()" überlegen was gemeint ist, bei "objekt.getBenutzerkennung()" ist alles klar, weil der gute Entwickler hat ja das Fachkonzept gelesen und weiß was die Benutzerkennung ist. Bei allen anderen muss er raten

    ciao

    gandhi


    Ich glaube Du programmierst nur im kleinen Stil oder hinter Scheuklappen oder? Ich habe oben in meinem Post ein wunderbares Beispiel gegeben warum programmieren in der Muttersprache Mist ist. Wir leben in einer Welt wo die Wahrscheinlichkeit, dass dein Nachfolger eine andere Sprache spricht relativ groß ist und sei es nur weil die Ganze IT nach Indien ausgesourced wird.

    Gruß

    Claus
    2 Stunden Try & Error erspart 10 Minuten Handbuchlesen.

    Pre-Kaffee-Posts sind mit Vorsicht zu geniessen :)
  • Svennse schrieb:

    ich habe mal deine Lösung umgesetzt…..
    ich denke dir hat noch eine kleine info gefehlt:

    Quellcode

    1. @interface DatenweiterleitungViewController : UIViewController {
    2. IBOutlet UITextField *eingabelaenge;
    3. IBOutlet UITextField *eingabebreite;
    4. IBOutlet UILabel *ausgabelaenge;
    5. IBOutlet UILabel *ausgabebreite;
    6. IBOutlet UIView *grundrasterView;
    7. ….

    steht im View.Controller.h

    denn nun erhalte ich mehrere Fehler im Compiler. "request for member 'breite' in something not a structure or union" auch bei GrundrasterView.laenge kommt dieser Fehler.

    Du hast ja hier im Header auch grundrasterView als UIView deklariert. UIView kennt die Properties breite und laenge natürlich nicht. grundrasterView soll ja aber eine Instanz der Klasse Messestand sein. Also deklariere den auch so:

    IBOutlet Messestand *grundrasterView;

    Dann sollte auch der Compiler zufrieden sein.

    Svennse schrieb:

    Ich weiß auch was Du gemeint hast mit den unterschiedlichen Instanzen, denn bei jeder Instanz ein Klasse können ja die Variablen unterschiedliche werte haben in der jeweiligen Instanz und ich denke da ist ja auch mein Problem

    Genau, du werkelst da mit zwei Instanzen herum, die voneinander vollkommen unabhängig sind.
  • Thallius schrieb:

    Ich glaube Du programmierst nur im kleinen Stil oder hinter Scheuklappen oder? I


    Kein Grund persönlich zu werden, oder? Du kennst weder mich noch meinen beruflichen Background.

    Gerade Dein Beispiel mit dem Franzosen zeigt doch, was ich sagen wollte: Dort hat der Gute einfach die Projektsprache ignoriert und das Zeug in Französisch gemacht. Sowas darf nie und nimmer durch's Review bzw. die Abnahme kommen. Ich wollte nur klarlegen, das eine pauschalisierte Verteufelung von Deutsch in bestimmten Umgebungen einfach falsch ist.

    Was machste z.B. wenn bestimmte Teile der Software (z.B. die Persistenzschicht) komplett generiert werden und das zugrundeliegende Klassenmodell eben in Deutsch ist? Nochmal einen englische Wrapper entwickeln? Da musst Du dann halt mit sowas wie "getBenutzerkennung()" leben.

    Englisch ist im übrigen auch nicht der Heilsbringer. Da hat man oft die Situation, dass sich zwei Nicht-Muttersprachler missverstehen. Die Situation hatte ich schon öfters mit den oben genannten indischen Kollegen. Aber das ist schon OT und gehört nicht hierher.

    ciao

    gandhi

    P.S: Was ganz anderes: Hat hier noch jemand Probleme beim Erstellen/Beantworten von Nachrichten unter iOS8? Auf dem iPad ist der Text oft nicht zusehen und man muss blind tippen.
  • gandhi schrieb:


    P.S: Was ganz anderes: Hat hier noch jemand Probleme beim Erstellen/Beantworten von Nachrichten unter iOS8? Auf dem iPad ist der Text oft nicht zusehen und man muss blind tippen.


    Ja ist bei mir auch so. Am schlimmsten daran ist, dass oftmals der ganze Browser einfriert wenn ich Backspace benutze und dann kann ich alles noch einmal tippen weil ich den Browser mit Doppelklick auf den Homebutton komplett abschiessen muss damit er wieder geht. Das nervt ohne Ende.

    Gruß

    Claus
    2 Stunden Try & Error erspart 10 Minuten Handbuchlesen.

    Pre-Kaffee-Posts sind mit Vorsicht zu geniessen :)
  • gandhi schrieb:

    P.S: Was ganz anderes: Hat hier noch jemand Probleme beim Erstellen/Beantworten von Nachrichten unter iOS8? Auf dem iPad ist der Text oft nicht zusehen und man muss blind tippen.

    In allen Geschmacksrichtungen: Blind schrieben, nach Rotation geht es dann wieder für ein paar Buchstaben, Einfrieren des Browsers, vor kurzem alle HTML-Tags als Content usw. Mittlerweile mag ich unter iOS nur noch Kurzantworten schreiben, weil's einfach nur nervt...

    Mattes
    Diese Seite bleibt aus technischen Gründen unbedruckt.
  • #Hier noch mal ein kleiner Nachtrag zu meinem Problemen.....

    Ich habe das ganze nun ganz anders gelöst,
    Da ich die Informationen ja auch noch an anderer Stelle benötige gehe ich über die UserDefaults

    hier mein Lösungcode:

    Quellcode

    1. - (IBAction)neuerStand:(id)sender {
    2. NSString *varlaenge = standlaenge.text;
    3. NSString *varbreite = standbreite.text;
    4. int laenge = [varlaenge floatValue];
    5. int breite = [varbreite floatValue];
    6. [[NSUserDefaults standardUserDefaults] setInteger:breite forKey:@"plano.StandBreite"];
    7. [[NSUserDefaults standardUserDefaults] setInteger:laenge forKey:@"plano.StandLaenge"];
    8. NSLog(@"Länge: %i", laenge);
    9. NSLog(@"Breite: %i", breite);
    10. }
    Alles anzeigen
    Wenn Dich alles verlässt kommt das allein sein.
    Wenn Du alles verlässt kommt die Einsamkeit.
  • Svennse schrieb:


    Da ich die Informationen ja auch noch an anderer Stelle benötige gehe ich über die UserDefaults


    Ich stolpere hier nur ganz zufällig schlecht gelaunt und ohne Kaffee über diesen Post. Du speicherst Daten in NSUserDefaults, um sie in verschiedenen Objekten innerhalb der App zu verwenden? Chapeau! :rolleyes:
  • wenn du was an verschiedenen Stellen verwendest, kann man das schon als Userdefaults sehen und dann hat es sehr wohl was darin zu suchen. Generell würde ich das nicht aussschliessen.

    Apple Doku:
    The NSUserDefaults class provides a programmatic interface for interacting with the defaults system. The defaults system allows an application to customize its behavior to match a user’s preferences. For example, you can allow users to determine what units of measurement your application displays or how often documents are automatically saved. Applications record such preferences by assigning values to a set of parameters in a user’s defaults database.

    So wie ich das sehe, passt das auf sein Beispiel:

    @Klaus: hol dir Kaffee .. is besser für alle um dich rum :D

    @gandhi: sorry, aber wenn Deutsch, dann bitte komplett. Bei "getBenutzerkennung()" stellen sich mir alle Nackenhaare auf. Dann entweder getUserID() oder "HoleBenutzerkennung()". Aber getBenutzerkennung() ... waahhhh

    Ich nehme da auch eher die englischen Bezeichnungen. Erstens ist die Kommunikation mit Apple bei Tickets wesentlich einfacher, weil die mit den englischen Namen mehr anfangen können, zweitens sind Programmierer, die kein Englisch können, eh ziemlich aufgeschmissen, so dass den Code jeder lesen kann. Dann muss man halt die dt. Bezeichnungen ins Englische übertragen. Da macht man in der Klasse gaaaaanz oben ein Kommentar, wie DE <-> EN und gut ist.
    Es gibt zwei Dinge, die sind unendlich. Das Universum und die menschliche Dummheit. Wobei beim Universum bin ich mir nicht sicher - Albert Einstein
  • dies userdefaults sind für einstellungen die die App/den User betreffen und nicht für die Daten mit der die App arbeitet

    wenn ich eine App habe die mir Nachrichten präsentiert, dann kann ich in den Userdefaults speichern das Sportnachrichten meine favorisierten Nachrichten sind, aber ich speicher dann nicht die Sportnachrichten in den Userdefaults
    Ich weiß nicht immer wovon ich rede aber ich weiß das ich Recht habe. :saint:
  • FWerewolf schrieb:

    'The defaults system allows an application to customize its behavior to match a user’s preferences.


    Das ist der Satz, den Du herausstellen wolltest. Das Konzept sieht das Speichern von Einstellungen vor, nicht von Daten. Das kann man natürlich machen, aber in diesem konkreten Fall ist die Verwendung der NSUserDefaults ja nur deswegen aufgekommen, weil der Kollege nicht weiß, wie er die Daten, die er braucht, vernünftig durch die App reichen soll. Er könnte die natürlich auch in der iCloud speichern. Ist auch nicht falsch. Aber genauso unsinnig. ;)
  • nussratte schrieb:


    wenn ich eine App habe die mir Nachrichten präsentiert, dann kann ich in den Userdefaults speichern das Sportnachrichten meine favorisierten Nachrichten sind, aber ich speicher dann nicht die Sportnachrichten in den Userdefaults


    Das erinnert mich an eine Banking-App, die ich vor Jahren mal auditiert habe. Der schlaue Programmierer wollte ganz sicher gehen und hat *alle* Daten in der Keychain gespeichert. Nicht nur die PIN, sondern sämtliche Transaktions- und Kontodaten. Clevere Idee. Leider das Konzept nicht verstanden. Und mit ein paar tausend Einträgen wird die Keychain irgendwann so angenehm wie alter Kaugummi. Aber wenigstens hatte er das Benutzer-Passwort mit Base64 verschlüsselt. ^^
  • nussratte schrieb:

    wenn ich eine App habe die mir Nachrichten präsentiert, dann kann ich in den Userdefaults speichern das Sportnachrichten meine favorisierten Nachrichten sind, aber ich speicher dann nicht die Sportnachrichten in den Userdefaults

    Macht er ja auch nicht. Er speichert ja lediglich zwei Koordinaten ab, von denen nicht klar ist, ob das nicht auch vielleicht Einstellungen sind.
    „Meine Komplikation hatte eine Komplikation.“
  • Hmmm,

    also meine App ist dazu da um eine Messestand skizzenhaft aus verschiedenen Modulen zusammen zu setzen.

    Die Daten die ich speichere sind die länge und Breite des Messestand.
    Ich denke mal da die Daten immer wieder gebraucht werden sind sie als UserDefaults nicht wirklich falsch.

    Sie werden ja auch dann gebraucht und aus den UserDefaults wieder ausgelesen wenn ich die App verlasse und zu einem späteren Zeitpunkt an meinem Entwurf weiter arbeiten will.
    Die einzelnen Datensätze, Möbelstücke, Wände, usw. die auf dem Messestand platziert wurde, werden in einer DokumentenDatei gespeichert und von dort aus wieder ausgelesen.
    zumindest war das meine Idee......

    Aber ich bin auch offen für andere bessere Vorschläge..........
    Wenn Dich alles verlässt kommt das allein sein.
    Wenn Du alles verlässt kommt die Einsamkeit.
  • Svennse schrieb:

    Sie werden ja auch dann gebraucht und aus den UserDefaults wieder ausgelesen wenn ich die App verlasse und zu einem späteren Zeitpunkt an meinem Entwurf weiter arbeiten will.
    Die einzelnen Datensätze, Möbelstücke, Wände, usw. die auf dem Messestand platziert wurde, werden in einer DokumentenDatei gespeichert und von dort aus wieder ausgelesen.
    zumindest war das meine Idee......

    Aber ich bin auch offen für andere bessere Vorschläge..........

    Hört sich für mich so an, als gehört die Länge und Breite des Messestandes ebenfalls in die Dokumenten Datei. Nicht jeder Messestand ist ja wohl nicht gleich groß.