• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Viele hassen ihn, manche schwören auf ihn, wir aber möchten unbedingt sehen, welche Bilder Ihr vor Eurem geistigen Auge bzw. vor der Linse Eures iPhone oder iPad sehen könnt, wenn Ihr dieses Wort hört oder lest. Macht mit und beteiligt Euch an unserem Frühjahrsputz ---> Klick

Programmieren mit XCode

  • Ersteller severus
  • Erstellt am

Amin Negm-Awad

Süsser Pfaffenapfel
Registriert
01.03.07
Beiträge
665
In Core-Data sind alle Eigenschaften Objekte. Du bekommst einen Verweis auf eine NSNumber-Instanz zurück. Den Float kannst du dir dann mit -floatValue (NSNumber) abholen.

Wenn du gerade Lust hast, kannst du dir da freilich auch eine Kategorie draus machen:
Code:
@implementation NSObject( scalarKeyValueCoding ) {
- (float)floatValueForKey:(NSString*)key {
id floatObject = [self valueForKey:key];
if( [id isKindOfClass:[NSNumber class]] ) {
   return [floatObject floatValue]; //Edit
}
return NaN;
}
Entsprechend kannst du dir einen Setter bauen. Für das Ganze muss dann natürlich noch ein Interface her.

Alles ungetestet und ohne *Peng*.
 
Zuletzt bearbeitet:

sumpfmonsterjunior

Morgenduft
Registriert
17.03.05
Beiträge
167
Danke erstmal für die Antworten. Aber ich weiß immer noch nicht, wo der Fehler liegt ;)
Gibt es denn eigentlich keine Möglichkeit, das bei dem Model direkt einzustellen, dass jeder Neueintrag das Attribut nummer um 1 erhöht?

Hi,

das Problem ist glaube ich auch ein mentales...

Zuallererst: CoreData ist keine Datenbank.

Wahrscheinlich möchtest Du mit dem Attribut Nummer eine ID ähnlich einer SQL-Datenbank-Tabelle nachbilden. Dafür würde sich natürlich als Erstes anbieten, den Datentyp auf Integer im Modell zu ändern. Aber da CoreData wie schon gesagt keine Datenbank ist (und Dein Modell auch nicht als Tabelle sondern als Objektgraph von CoreData verwaltet wird), wäre es hilfreich zu erklären, was Du genau vor hast und wofür die Eigenschaft nummer da ist.

Einstweilen viele Grüße, SMJ
 

sumpfmonsterjunior

Morgenduft
Registriert
17.03.05
Beiträge
167
Nachtrag:

wie Amin vorhin schonmal angedeutet hat: Du musst eine Unterklasse von NSManagedObject erstellen und kannst dann in der Methode awakeFromInsert eine eigene Initialisierung vornehmen (eine hässliche und primitive Variante wäre ein statische Ganzzahlvariable, die Du hochzählst und als Initialisierer benutzt - bitte, bitte schlagt mich nicht für dieses Tip (Amin, below, tjp...), obwohl ich es für den Vorschlag in einem öffentlichen Forum sicher verdient hätte :)

Gruß, SMJ

Hier gibts ne Anleitung von Apple: http://developer.apple.com/cocoa/coredatatutorial/
Unterpunkt "Adding Custom Logic"
 

Amin Negm-Awad

Süsser Pfaffenapfel
Registriert
01.03.07
Beiträge
665
Nachtrag:

wie Amin vorhin schonmal angedeutet hat: Du musst eine Unterklasse von NSManagedObject erstellen und kannst dann in der Methode awakeFromInsert eine eigene Initialisierung vornehmen (eine hässliche und primitive Variante wäre ein statische Ganzzahlvariable, die Du hochzählst und als Initialisierer benutzt - bitte, bitte schlagt mich nicht für dieses Tip (Amin, below, tjp...), obwohl ich es für den Vorschlag in einem öffentlichen Forum sicher verdient hätte :)[…]
Niemand schlägt dich dafür!

Wenn man einen eindeutigen Index innerhalb der Beziehung benötigt, ist es natürlich "überflüssig" und auch gefährlich, so vorzugehen. Da sollte man lieber den Setter der verweisenden Entität überschreiben. "Klassisch" hätte man da auch so gemacht.

Häufig will man aber einen eindeutigen Index, der über sämtliche Instanzen einer Entität einmalig ist, etwa zur Sortierung. Und da ist ein solches Vorgehen durchaus richtig. Es hat jedoch gewisse Probleme, die man nicht aus dem Auge verlieren darf:

a) Entität != Klasse
Eine Klasse kann für mehrere Entitäten verwendet werden. Zählt man also klassenweit hoch, so "verteilen" sich die Indexe auf mehrere Entitäten. Dies ist nicht weiter schlimm, wenn man im Hinterkopf behält, dass die Indexes nicht geschlossen sein müssen, man also etwa 1, 5, 6, 9, 10, 17 hat. Für die meist angedachte Sortierung ist das aber gleichgültig.

b) Verschwendung
Da man dann nicht mehr auf dem Objektgraphen, sondern auf der Entität (eigtl: Klasse, siehe oben) arbeitet, programmiert man hier in der Tat DB-ähnlich. Daher bekommt man die üblichen Probleme:
- Wenn der Index ausgeht, was wegen der Löcher bei wenigen Objekten passieren kann, muss man so etwas ähnliches wie reindizieren. (Anders als bei einer Datenbank dient der Index allerdings nicht als Verweis, was die Sache deutlich(!) einfacher macht.)
- Drag & Drop ist etwas eklig, wenn der Index als Sortierindex dienen soll. Hier kann es sein, dass ich sämtliche Instanzen der Klasse (! Nichht nur Entität) laden muss, um das Ganze neu zu indizieren. Das dürfte von der konkreten Programmsituation aus schwierig werden.

Ich würde also in diesem Falle empfehlen, eine Klasse immer nur für eine Entität zu verwenden. Damit wird es schon einmal deutlich einfacher. Wenn man es schön machen will, macht man sich einen Zähler Singleton, der pro Entität funktioniert. Die Klasse zählt also für jede Entität gesondert. Dazu wollte ich eigentlich noch ein Tutorial schreiben, aber die Zeit …
 

kybdf2

Rheinischer Winterrambour
Registriert
10.02.06
Beiträge
923
OK, ich glaube ich warte dann mal, bis du das Tutorial rausbringst. Ich steige nämlich im Moment nicht ganz durch. Ich habe eine neue Klasse erstellt, abgeleitet von ManagedObject und die Entität beim Model auf diese Klasse auch angepasst. Dann habe ich die Methode awakeFromInsert erstmal gefüllt mit
Code:
[self setValue:[NSDate date] forKey:@"datum"];
Das habe ich in dem Apple Tutorial gefunden. Funktioniert auch bestens, wenn ich jetzt aber
Code:
float f = 123;
[self setValue:f forKey:@"nummer"];
versuche, bekomme ich die Meldung
Code:
error: incompatible type for argument 1 of 'setValue:forKey:'
 

Amin Negm-Awad

Süsser Pfaffenapfel
Registriert
01.03.07
Beiträge
665
Auch KVC benutzt Objekte. Was hast du immer nur mit einem Float?
Code:
float f = 123;
NSNumber* floatObject = [NSNumber numberWithFloat:f];
[self setValue:floatObject forKey:@"nummer"];
Da lohnt sich das Warten auch nciht, weil das in Objective-C 2 nicht anders ist. Es steht auch schon im bisherigen Tutorial:
Auch diese Variable hat einen Typen, den wir einfach vorangestellt haben, nämlich float . Und jetzt kommt das zweite Neue: float ist keine Klasse. Dies bedeutet, dass unsere Variable kein Objekt enthält. In Objective-C gibt es nämlich zwei Arten von Dingen: Objekte (kennen Sie langsam zur genüge) und so genannte Skalare. Skalare sind einfache Werte. Sie haben also einen Wert, dann noch einen Wert und einen Wert. Sie haben aber keine Eigenschaften und Methoden: Keine Objekte. Einfach nur den Wert. float bedeutet hierbei, dass es sich um eine gebrochene Zahl handelt, eine Fließkommazahl. Also 4,2561 oder 1.936,73 usw. Dies heißt, dass wir der Variablen value einen solchen Wert zuweisen dürfen. Dies würde so aussehen:
 

kybdf2

Rheinischer Winterrambour
Registriert
10.02.06
Beiträge
923
Ahh, jetzt hab ichs kapiert. Diese Typumwandlung ist genau das, was mir fehlte.
Ich schreibe übrigens an einem Flugbuch-Programm. Also eins, in das man Flüge einträgt, die an einem Flugplatz stattgefunden haben. Deshalb soll die erste Spalte auch eine laufende Nummer sein. SMJ hatte ja gefragt, was ich vorhatte...
Jetzt habe ich die Sache mit der laufenden Nummer so gelöst. Im Controller folgende Methode:
Code:
- (IBAction)addItem:(id)sender
{		
		[arrayController add:(id)sender];
		NSNumber* intObject = [NSNumber numberWithInt:i];
		[[arrayController selection] setValue:intObject forKey:@"nummer"];
		i++;
}
Dazu sei gesagt, dass der Controller die globale Variable int i hat. (Ja, ich bin auf int umgestiegen, wie SMJ empfohlen hat ^^)
Allerdings habe ich jetzt folgendes Problem, das ich mir nicht erklären kann:
wenn ich die erste Zeile hinzufüge, dann hat sie die Nummer 0. Soweit richtig, denn das ist der im Model eingestellte default-Wert. Füge ich eine weitere hinzu, bekommt genau diese Zeile eine höhere Zahl und die neue Zeile wieder die 0. Was soll das? Ich habe es doch extra so geschrieben, dass erst eine Zeile hinzugefügt wird und diese dann die höhere Zahl bekommt.
Screenshot zur Verdeutlichung im Anhang.
 

Anhänge

  • Bild 3.jpg
    Bild 3.jpg
    84,6 KB · Aufrufe: 228

Amin Negm-Awad

Süsser Pfaffenapfel
Registriert
01.03.07
Beiträge
665
Ahh, jetzt hab ichs kapiert. Diese Typumwandlung ist genau das, was mir fehlte.
Ich schreibe übrigens an einem Flugbuch-Programm. Also eins, in das man Flüge einträgt, die an einem Flugplatz stattgefunden haben. Deshalb soll die erste Spalte auch eine laufende Nummer sein. SMJ hatte ja gefragt, was ich vorhatte...
Jetzt habe ich die Sache mit der laufenden Nummer so gelöst. Im Controller folgende Methode:
Code:
- (IBAction)addItem:(id)sender
{		
		[arrayController add:(id)sender];
		NSNumber* intObject = [NSNumber numberWithInt:i];
		[[arrayController selection] setValue:intObject forKey:@"nummer"];
		i++;
}
Dazu sei gesagt, dass der Controller die globale Variable int i hat. (Ja, ich bin auf int umgestiegen, wie SMJ empfohlen hat ^^)
Allerdings habe ich jetzt folgendes Problem, das ich mir nicht erklären kann:
wenn ich die erste Zeile hinzufüge, dann hat sie die Nummer 0. Soweit richtig, denn das ist der im Model eingestellte default-Wert. Füge ich eine weitere hinzu, bekommt genau diese Zeile eine höhere Zahl und die neue Zeile wieder die 0. Was soll das? Ich habe es doch extra so geschrieben, dass erst eine Zeile hinzugefügt wird und diese dann die höhere Zahl bekommt.
Screenshot zur Verdeutlichung im Anhang.
Jetzt wird es komplizierter. Ich zitiere einfach mal aus der nächsten Auflage. Da geht es zwar um eine andere Methode, das Problem bleibt aber: Der Array-Controller verzögert sein -add:

Die Sache ist recht einfach: Bisher hat sich unser Tableview über den Array-Controller mit Bindings synchronisiert. Dieses Binding fehlt jetzt. Also gibt es auch keine Synchronisation. Vielmehr müssen wir dem Tableview explizit sagen, dass neue Informationen vorliegen. Dies erledigen wir in den Actionmethoden, nachdem wir ein Element eingefügt haben:
Code:
…
- (IBAction)addGroup:(id)sender 
{
   [groupsController add:sender];
   [sidebarView reloadData];
}

- (IBAction)removeGroup:(id)sender
{
   [groupsController remove:sender];
   [sidebarView reloadData];
}
…
Wenn Sie jetzt das Programm starten, werden Sie auch bei dem ersten Hinzufügen nichts bemerken. Fügen Sie allerdings eine weitere Gruppe hinzu, so erscheint die erste!??!?! Ja, das ist seltsam. Der Grund ist einfach: Das -add: (NSArrayController) fügt das Element nicht sofort ein. Vielmehr wartet es einen Durchgang der Runloop. Damit kommt unser -reloadData (NSOutlineView) zu früh und bekommt von dem neuen Eintrag nichts mit. Um die Verzögerung zu vermeiden, müssen wir eine andere Methode des Array-Controllers verwenden:
Code:
…
- (IBAction)addGroup:(id)sender 
{
   NSManagedObjectContext* context;
   NSEntityDescription* entity;
   NSManagedObject* groupMO; 
   
   context = [[self document] managedObjectContext]; 
   entity = [NSEntityDescription entityForName:@"Group"
                        inManagedObjectContext:context]; 
   groupMO = [[[NSManagedObject alloc] 
                                initWithEntity:entity
                insertIntoManagedObjectContext:context]
                                autorelease]; 
   [groupsController addObject:groupMO]; 

   [sidebarView reloadData];
}
…
Da wir erst im nächsten Kapitel über Core-Data im Detail sprechen, will ich hier nur den Gang skizzieren: In den ersten Zeilen erzeugen wir ein managed Object, also eine Instanz unserer Gruppe. Da bei Core Data jedoch managed Obejcts zu einer Entität gehören und sich in einem Kontext befinden, müssen wir dies bei der Objekterzeugung mit angeben. Das so erzeugte Objekt teilen wir dann dem Array-Conroller mit.
Erneut testen und starten und – aaaaah! Ist es nicht schön, wenn der Schmerz nachlässt?

Mit anderen Worten: Nach dem -add: existiert das neue Objekt noch gar nicht.

Du kannst die obige Lösung wählen, du kannst – und das ist in deinem Falle besser! – aber auch das Setzen des Indexes im -awakeFromInsert machen. Die Ansätze dafür hast du hier bereits im Thread.

Insgesamt frage ich mich aber, was diese laufende Nummer überhaupt soll.
 

commander

Baldwins roter Pepping
Unvergessen
Registriert
25.02.04
Beiträge
3.206
(...)
4.
Verwendung deutscher Wörter als Bezeichner.

Aber gerade das ist doch total hip in der OpenSource-Community :)

Da heissen Listener "Lauscher" und Interfaces "Schnittstellen".... ich find das ganz gut, wenn man nicht in internationalen Projekten arbeitet, nationale Fachlichkeiten berücksichtigt werden müssen... oder die Doku neh nur auf deutsch geschrieben wird. :D

Ich hab auch schon so krudes Zeugs gesehen wie "HeilpraktikerUnit" :p

Gruß,

.commander
 

kybdf2

Rheinischer Winterrambour
Registriert
10.02.06
Beiträge
923
Jetzt wird es komplizierter. Ich zitiere einfach mal aus der nächsten Auflage. Da geht es zwar um eine andere Methode, das Problem bleibt aber: Der Array-Controller verzögert sein -add:



Mit anderen Worten: Nach dem -add: existiert das neue Objekt noch gar nicht.

Du kannst die obige Lösung wählen, du kannst – und das ist in deinem Falle besser! – aber auch das Setzen des Indexes im -awakeFromInsert machen. Die Ansätze dafür hast du hier bereits im Thread.

Insgesamt frage ich mich aber, was diese laufende Nummer überhaupt soll.

OK, sowas ähnliches dachte ich mir schon, aber mir fehlte mal wieder das Wissen... Danke dir für die Lösung ;) Allerdings erhalte ich jetzt
Code:
warning: Controller may not respond to '-document'
Dass ich das ganze über den Controller mache hat den Vorteil, dass ich dann da die Nummer immer verfügbar habe. So könnte ich dann z.B. auch programmieren, dass
Nummer einer Zeile = Nummer der Vorgängerzeile + 1
ist, was meines Erachtens über -awakeFromInsert nicht geht. Das hätte den Vorteil, dass die Nummerierung nicht unterbrochen wird, wenn eine Zeile gelöscht wird.
Was das alles mit der Nummer soll:
Also erstmal war das eine Vorgabe, die mir gestellt wurde. Man möchte das so haben, damit die Flüge alle schön nummeriert sind und hinterher besser identifizierbar sind.
Zweitens könnte ich dann auch im Programm die Liste anhand der Nummer durchlaufen, z.B. um eine bestimmte Zeile zu suchen. Das geht wahrscheinlich anders besser, aber ich dachte mir, wenn man schon eine Nummerierung hat, kann man sie auch nutzen. ;)
 

Amin Negm-Awad

Süsser Pfaffenapfel
Registriert
01.03.07
Beiträge
665
Aber gerade das ist doch total hip in der OpenSource-Community :)

Da heissen Listener "Lauscher" und Interfaces "Schnittstellen".... ich find das ganz gut, wenn man nicht in internationalen Projekten arbeitet, nationale Fachlichkeiten berücksichtigt werden müssen... oder die Doku neh nur auf deutsch geschrieben wird. :D

Ich hab auch schon so krudes Zeugs gesehen wie "HeilpraktikerUnit" :p
Ich habe nichts gegen deutsch. Ich habe etwas gegen deutsche Bezeichner. Und dabei meine ich nicht fehlenden internationalen Austausch, sondern einfach die mangelnde Tauglichkeit. Das fängt bei Umlauten an und hört bei getrennten Verben auf:
Code:
[einObjekt leseDatei:datei ein];
geht nun einmal in Objective-C nicht. Und
Code:
[einObjekt einleseDatei:datei]
ist dann doch kein Deutsch mehr.
 

Amin Negm-Awad

Süsser Pfaffenapfel
Registriert
01.03.07
Beiträge
665
OK, sowas ähnliches dachte ich mir schon, aber mir fehlte mal wieder das Wissen... Danke dir für die Lösung ;) Allerdings erhalte ich jetzt
Code:
warning: Controller may not respond to '-document'
Scherzkeks II: Das ist ja auch aus einem Projekt aus dem Buch entnommen. Es wäre ein großer Zufall, wenn dein Projekt dieselben Eigenschaften hätten. Etwas Transferleistung musst du schon selbst mitbringen. ;)


Dass ich das ganze über den Controller mache hat den Vorteil, dass ich dann da die Nummer immer verfügbar habe. So könnte ich dann z.B. auch programmieren, dass
Nummer einer Zeile = Nummer der Vorgängerzeile + 1
ist, was meines Erachtens über -awakeFromInsert nicht geht.
Es hat den Nachteil, dass du nur dann gültige Objekte hast, wenn über diesen Controller Instanzen eingefügt werden. Du kannst im Controller immer noch einen anderen Wert setzen.

Das hätte den Vorteil, dass die Nummerierung nicht unterbrochen wird, wenn eine Zeile gelöscht wird.
Was das alles mit der Nummer soll:
Also erstmal war das eine Vorgabe, die mir gestellt wurde. Man möchte das so haben, damit die Flüge alle schön nummeriert sind und hinterher besser identifizierbar sind.
Flüge haben Flugnummern als Primärschlüssel. Wer seine ganz private Nummerierung als Identifikation nimmt, sollte am besten Software für einen Flughafen schreiben, bei dem sämtliche Flüge starten und gleich auch wieder landen. Da gewinnt Rundflug doch gleich eine wörtliche Bedeutung.
Zweitens könnte ich dann auch im Programm die Liste anhand der Nummer durchlaufen, z.B. um eine bestimmte Zeile zu suchen. Das geht wahrscheinlich anders besser, aber ich dachte mir, wenn man schon eine Nummerierung hat, kann man sie auch nutzen. ;)
Das ist eine gute Idee, die man beim Speichern ausbauen kann: Anstelle die Daten auf die Festplatte zu schreiben, solltest du sie an einen Server schicken, der sie ausdruckt und gleich als Brief an en User zurückschickt. Dort steht dann ein Scanner mit OCR-Software, die den Brief liest und dann der Software die Möglichkeit gibt, die gespeicherten Daten wieder zu lesen.

Klar, das geht auch einfacher. Aber wenn man schon einen Server, die Deutsche Post und einen Scanner hat, sollte man sie auch nutzen. Vielleicht kann man noch E-Mail, distributed Objects und Kunstoffrecycling einbauen. Gibt es ja auch alles, muss also dringend genutzt werden!
 

kybdf2

Rheinischer Winterrambour
Registriert
10.02.06
Beiträge
923
Scherzkeks II: Das ist ja auch aus einem Projekt aus dem Buch entnommen. Es wäre ein großer Zufall, wenn dein Projekt dieselben Eigenschaften hätten. Etwas Transferleistung musst du schon selbst mitbringen. ;)



Es hat den Nachteil, dass du nur dann gültige Objekte hast, wenn über diesen Controller Instanzen eingefügt werden. Du kannst im Controller immer noch einen anderen Wert setzen.

Flüge haben Flugnummern als Primärschlüssel. Wer seine ganz private Nummerierung als Identifikation nimmt, sollte am besten Software für einen Flughafen schreiben, bei dem sämtliche Flüge starten und gleich auch wieder landen. Da gewinnt Rundflug doch gleich eine wörtliche Bedeutung.

Das ist eine gute Idee, die man beim Speichern ausbauen kann: Anstelle die Daten auf die Festplatte zu schreiben, solltest du sie an einen Server schicken, der sie ausdruckt und gleich als Brief an en User zurückschickt. Dort steht dann ein Scanner mit OCR-Software, die den Brief liest und dann der Software die Möglichkeit gibt, die gespeicherten Daten wieder zu lesen.

Klar, das geht auch einfacher. Aber wenn man schon einen Server, die Deutsche Post und einen Scanner hat, sollte man sie auch nutzen. Vielleicht kann man noch E-Mail, distributed Objects und Kunstoffrecycling einbauen. Gibt es ja auch alles, muss also dringend genutzt werden!

ROFL. Es geht hier nicht um einen großen Flughafen mit den herkömmlichen Flugnummern. Es geht um einen kleinen Flugplatz, wo es tatsächlich hauptsächlich Rundflüge gibt.
Zum Thema Scherzkeks: wie soll ich denn wissen, was bei dir in der -document Methode steht? Dachte, das wäre eine die jedes NSObject von sich aus hat. Dann kläre mich doch bitte auf, oh Xcode Guru. :) Was genau soll die Methode zurückgeben?
Ich habe schon geahnt, dass eine ähnliche Reaktion kommt auf meinen Vorschlag die Liste anhand der Nummer zu durchsuchen. Das ist aber im Moment für mich, der ja noch wenig Ahnung hat, die einfachste Wahl.

EDIT: Habs schon. So funktioniert es jetzt bei mir:
Code:
- (IBAction)addItem:(id)sender
{
		NSManagedObjectContext* context;
		NSEntityDescription* entity;
		NSManagedObject* flugbuchMO;
		context = [arrayController managedObjectContext];
		entity = [NSEntityDescription entityForName:@"Flugbuch" inManagedObjectContext:context];
		flugbuchMO = [[[NSManagedObject alloc] initWithEntity:entity insertIntoManagedObjectContext:context] autorelease];
		
		[arrayController addObject:flugbuchMO];
		NSNumber* intObject = [NSNumber numberWithInt:i];
		[[arrayController selection] setValue:intObject forKey:@"nummer"];
		i++;	
}

Danke für die Hilfe und vor allem für die Geduld...ich weiß, bin ein Noob ;)
 

kybdf2

Rheinischer Winterrambour
Registriert
10.02.06
Beiträge
923
Flugplatz? Sagte jemand "Flugplatz"? Wo?

Bei Software für einen Flugplatz biete ich sofort meine Hilfe an!

Alex

Ja, ich sagte Flugplatz. :)
Es geht um das Towerflugbuchprogramm von EDLK (Krefeld Egelsberg)
 

below

Purpurroter Cousinot
Registriert
08.10.06
Beiträge
2.858
Boh... da sollte ich mal meine Schwiegereltern besuchen....

Alex
 

Amin Negm-Awad

Süsser Pfaffenapfel
Registriert
01.03.07
Beiträge
665
Ich verstehe ja, dass du neu bist. Das bedeutet aber nicht, dass du dich nicht zuerst selbst bemühen kannst. -document ist bereits der äußeren Schein nach ein Getter. Die Methode ist auch dokumentiert. Du hättest also in die Doku schauen können. Und ja, das kann man auch von einem Noob erwarten.

Davon abgesehen musst du schon abstrahieren. Wenn das alles Kauderwelsch für dich ist, dass du irgendwie unverstanden zusammensetzt, musst du etwas Grundlegendes lesen. So hat das keinen Sinn.

Und ehrlich gesagt: Ich gebe dir jetzt die 4., 5. Antwort. Meist Sachen, die du hättest nachschlagen können. Das ist gelinde gesagt, etwas unhöflich, wenn du es nicht wenigstens versuchst.
 

kybdf2

Rheinischer Winterrambour
Registriert
10.02.06
Beiträge
923
Ich verstehe ja, dass du neu bist. Das bedeutet aber nicht, dass du dich nicht zuerst selbst bemühen kannst. -document ist bereits der äußeren Schein nach ein Getter. Die Methode ist auch dokumentiert. Du hättest also in die Doku schauen können. Und ja, das kann man auch von einem Noob erwarten.

Davon abgesehen musst du schon abstrahieren. Wenn das alles Kauderwelsch für dich ist, dass du irgendwie unverstanden zusammensetzt, musst du etwas Grundlegendes lesen. So hat das keinen Sinn.

Und ehrlich gesagt: Ich gebe dir jetzt die 4., 5. Antwort. Meist Sachen, die du hättest nachschlagen können. Das ist gelinde gesagt, etwas unhöflich, wenn du es nicht wenigstens versuchst.

Hey, hab doch schon im EDIT gesagt, dass ichs schon selber rausgefunden hab. Hab mal wieder den Wald vor lauter Bäumen nicht gesehen. Habe auch gesagt, dass ich dir sehr dankbar bin, dass du mir hier geduldig immer wieder geantwortet hast. Wollte nicht unhöflich sein.
Alles davon ist auch nicht Kauderwelsch für mich, aber ich finde es doch teilweise sehr gewöhnungsbedürftig. Muss wohl wirklich erstmal was Grundlegendes lesen.
 

Amin Negm-Awad

Süsser Pfaffenapfel
Registriert
01.03.07
Beiträge
665
Hey, hab doch schon im EDIT gesagt, dass ichs schon selber rausgefunden hab. Hab mal wieder den Wald vor lauter Bäumen nicht gesehen. Habe auch gesagt, dass ich dir sehr dankbar bin, dass du mir hier geduldig immer wieder geantwortet hast. Wollte nicht unhöflich sein.
Alles davon ist auch nicht Kauderwelsch für mich, aber ich finde es doch teilweise sehr gewöhnungsbedürftig. Muss wohl wirklich erstmal was Grundlegendes lesen.
Okay, war auch eindeutig überreagiert von mir. Sorry & Schwamm drüber.

Du kommst ja auch schon voran, stimmt. Der Anfang ist das Schwierigste. Arbeite dich mal weiter durch. Ich helfe ja auch gerne weiter. Mit der Zeit erwirbst du nicht nur mehr Wissen, sondern auch Verständnis, dir selbst Wissen zu beschaffen.

ja, am Anfang hat man einfach keine Karte von den Waldwegen. Sorry!
 

alonzo

Auralia
Registriert
17.03.07
Beiträge
202
Amin, wie hast du eigentlich begonnen zu Programmieren, gibts da ne Geschichte irgendwo zum lesen? :innocent: