Hallo Zusammen,
ich hab gerade eine Ausbildung als Fachinformatiker angefangen (ca. 6 Monate dabei).
Wir arbeiten hauptsächlich mit VB.net somit ist das Wissen über Xcode beschränkt, um es vorsichtig auszudrücken.
Ich hab mich eigenständig die letzten Wochen mit Xcode beschäftigt um da rein zu kommen. Jetzt soll ich eine App schreiben.
Da kommt schon meine erste Frage: Swift oder Objective-C?
Nachdem was ich gelesen hab würde ich Swift sagen, aber was sagt ihr dazu?
Meine zweite Frage geht um die MVC-Struktur. Hier auf der Arbeit hab ich das bis jetzt nicht gelernt oder gesehen, bin da selber darauf gestoßen.
Wir arbeiten Hauptsächlich so, dass wir alles in die Klasse der View reinschreiben und so nicht wirklich OOP nutzen.
Da man mir gesagt hat ich hätte eine grüne Wiese und könnte die App so umsetzten wie ich wolle überlege ich ob ich die MVC-Struktur verwenden solle.
Ist das schwerer?
Was sagt ihr dazu?
Kenn ihr eine guten Tutorium dazu?
Mein größtes Problem bzw. der meiste Aufwand macht mir die Verbindung zu unserem Server.
Ich mach das mit Hilfe eines Webservice. Dieser zu schreiben ist keine große Sache aber wenn dann die XML-String ankommt wird es sehr aufwendig.
Momentan verwende ich einen eventbasierten XML-Parser (ich glaub sogar von apple) und eine SQLite Datenbank
Ich lass mir vom Webservice meistens eine Tabelle in XML-Form geben.
Ich schreibe für jede Anfrage an den Webserver ein Klasse.
Ich brauche für jede Spalte der Tabelle je zwei Variablen einmal ein NSMutableArray und ein bool.
In das NSMutableArray schreib ich Zeile für Zeile das richtige Element rein.
In das Bool halt ich fest ob ich gerade das Element bei der Vorgang bearbeitet wird.
Zum Schluss schreib ich noch Zeile für Zeile in die lokale SQLite-Datenbank auf dem Gerät.
Geht das nicht einfacher?
Immerhin ist doch im Xml-String die Tabelle-Struktur enthalten, da müsste es doch eine Möglichkeit geben sie eins zu eins in die SQLite-Datenbank zu übernehmen?
ich hab mal ein bisschen Code rein kopiert um meine Vorgehensweise zu verdeutlichen.
Wäre schön wenn ihr mir helfen könntet.
Alles anzeigen
ich hab gerade eine Ausbildung als Fachinformatiker angefangen (ca. 6 Monate dabei).
Wir arbeiten hauptsächlich mit VB.net somit ist das Wissen über Xcode beschränkt, um es vorsichtig auszudrücken.
Ich hab mich eigenständig die letzten Wochen mit Xcode beschäftigt um da rein zu kommen. Jetzt soll ich eine App schreiben.
Da kommt schon meine erste Frage: Swift oder Objective-C?
Nachdem was ich gelesen hab würde ich Swift sagen, aber was sagt ihr dazu?
Meine zweite Frage geht um die MVC-Struktur. Hier auf der Arbeit hab ich das bis jetzt nicht gelernt oder gesehen, bin da selber darauf gestoßen.
Wir arbeiten Hauptsächlich so, dass wir alles in die Klasse der View reinschreiben und so nicht wirklich OOP nutzen.
Da man mir gesagt hat ich hätte eine grüne Wiese und könnte die App so umsetzten wie ich wolle überlege ich ob ich die MVC-Struktur verwenden solle.
Ist das schwerer?
Was sagt ihr dazu?
Kenn ihr eine guten Tutorium dazu?
Mein größtes Problem bzw. der meiste Aufwand macht mir die Verbindung zu unserem Server.
Ich mach das mit Hilfe eines Webservice. Dieser zu schreiben ist keine große Sache aber wenn dann die XML-String ankommt wird es sehr aufwendig.
Momentan verwende ich einen eventbasierten XML-Parser (ich glaub sogar von apple) und eine SQLite Datenbank
Ich lass mir vom Webservice meistens eine Tabelle in XML-Form geben.
Ich schreibe für jede Anfrage an den Webserver ein Klasse.
Ich brauche für jede Spalte der Tabelle je zwei Variablen einmal ein NSMutableArray und ein bool.
In das NSMutableArray schreib ich Zeile für Zeile das richtige Element rein.
In das Bool halt ich fest ob ich gerade das Element bei der Vorgang bearbeitet wird.
Zum Schluss schreib ich noch Zeile für Zeile in die lokale SQLite-Datenbank auf dem Gerät.
Geht das nicht einfacher?
Immerhin ist doch im Xml-String die Tabelle-Struktur enthalten, da müsste es doch eine Möglichkeit geben sie eins zu eins in die SQLite-Datenbank zu übernehmen?
ich hab mal ein bisschen Code rein kopiert um meine Vorgehensweise zu verdeutlichen.
Wäre schön wenn ihr mir helfen könntet.
Quellcode
- - (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict
- {
- if([elementName isEqualToString:@"Kundennummer"])
- {
- KundennummerB= true;
- Daten = @"";
- }
- if([elementName isEqualToString:@"Bezeichnung1"])
- {
- Bezeichnung1 = true;
- Daten = @"";
- }
- if([elementName isEqualToString:@"Bezeichnung2"])
- {
- Bezeichnung2 = true;
- Daten = @"";
- }
- if([elementName isEqualToString:@"Kurzname"])
- {
- Kurzname = true;
- Daten = @"";
- }
- if([elementName isEqualToString:@"PLZ"])
- {
- PLZ = true;
- Daten = @"";
- }
- if([elementName isEqualToString:@"Stadt"])
- {
- Stadt = true;
- Daten = @"";
- }
- if([elementName isEqualToString:@"Strasse"])
- {
- Strasse = true;
- Daten = @"";
- }
- if([elementName isEqualToString:@"Vorwahl"])
- {
- Vorwahl = true;
- Daten = @"";
- }
- if([elementName isEqualToString:@"Telefon1"])
- {
- Telefon1 = true;
- Daten = @"";
- }
- if([elementName isEqualToString:@"Telefon2"])
- {
- Telefon2 = true;
- Daten = @"";
- }
- if([elementName isEqualToString:@"Email"])
- {
- Email = true;
- Daten = @"";
- }
- if([elementName isEqualToString:@"EMail_buchhaltung"])
- {
- EMail_Buchhaltung = true;
- Daten = @"";
- }
- if([elementName isEqualToString:@"Fax"])
- {
- Fax = true;
- Daten = @"";
- }
- if([elementName isEqualToString:@"Faxvorwahl"])
- {
- Faxvorwahl = true;
- Daten = @"";
- }
- Daten = @"";
- }
- - (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string
- {
- if((Daten != nil) && (KundennummerB == true || Faxvorwahl == true || Fax == true || Bezeichnung1 == true || Bezeichnung2 == true || Kurzname == true ||PLZ == true ||Stadt == true || Strasse == true || Vorwahl == true || Telefon1 == true ||Telefon2 == true || Email == true || EMail_Buchhaltung == true ))
- Daten = [Daten stringByAppendingString:string];
- }
- - (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName
- {
- if (Daten!=nil)
- {
- NSLog(@"Endelemt gefunden: %@ mit Inhalt: %@", elementName, Daten);
- if (KundennummerB == true)[ArrKundennummer addObject:Daten];
- if (Bezeichnung1 == true)[ArrBezeichnung1 addObject:Daten];
- if (Bezeichnung2 == true)[ArrBezeichnung2 addObject:Daten];
- if (Kurzname == true)[ArrKurzname addObject:Daten];
- if (PLZ == true)[ArrPLZ addObject:Daten];
- if (Stadt == true)[ArrStadt addObject:Daten];
- if (Strasse == true)[ArrStrasse addObject:Daten];
- if (Vorwahl == true)[ArrVorwahl addObject:Daten];
- if (Telefon1 == true)[ArrTelefon1 addObject:Daten];
- if (Telefon2 == true)[ArrTelefon2 addObject:Daten];
- if (Email == true)[ArrEmail addObject:Daten];
- if (EMail_Buchhaltung == true)[ArrEMail_Buchhaltung addObject:Daten];
- if (Fax == true)[ArrFax addObject:Daten];
- if (Faxvorwahl == true)[ArrFaxvorwahl addObject:Daten];
- KundennummerB = false;
- Bezeichnung1 = false;
- Bezeichnung2=false;
- Kurzname =false;
- PLZ =false;
- Stadt =false;
- Strasse =false;
- Vorwahl =false;
- Telefon1 =false;
- Telefon2 =false;
- Email =false;
- EMail_Buchhaltung =false;
- Fax =false;
- Faxvorwahl =false;
- Daten = nil;
- }
- }
- - (void)parserDidEndDocument:(NSXMLParser *)parser;
- {
- //UIAlertView *Hinweis = [[UIAlertView alloc] initWithTitle:@"Daten empfangen" message:[ArrName objectAtIndex:0] delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil, nil];
- //[Hinweis show];
- //for (int i=0; [ArrID count]-1; i++) {
- //NSLog(@"daten: %@",[ArrID objectAtIndex:i]);
- //}
- //NSLog(@"DBPfand ist: %@", DBPfad);
- FMDatabase *DB = [[FMDatabase alloc] initWithPath:DBPfad];
- [DB open];//"
- //SQL =@"CREATE TABLE IF NOT EXISTS \"KundenDaten\" (\"ID\" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL , \"Kundennummer\" INTEGER, \"Bezeichnung1\" CHAR,\"Bezeichnung2\" CHAR,\"Kurzname\" CHAR,\"PLZ\" CHAR,\"Stadt\" CHAR,\"Strasse\" CHAR,\"Vorwahl\" CHAR,\"Telefon1\" CHAR,\"Telefon2\" CHAR,\"Fax\" CHAR,\"Faxvorwahl\" CHAR,\"Email\" CHAR,\"EMail_Buchhaltung\" CHAR);";
- //[DB executeUpdate: SQL];
- //NSLog(@"Tabelle erstellen Fehler: %@",[DB lastError]);
- for (int Zähler =0 ; Zähler <= [ArrKundennummer count]-1; Zähler++)
- {
- FMResultSet *RS;
- RS = [DB executeQuery:[NSString stringWithFormat:@"SELECT * FROM KundenDaten WHERE Kundennummer = %@", [ArrKundennummer objectAtIndex:Zähler]]];
- if ([RS next])
- {
- NSString *SQL =[NSString stringWithFormat: @"UPDATE KundenDaten SET Bezeichnung1= '%@', Bezeichnung2 = '%@', Kurzname = '%@' WHERE Kundennummer = %@",[ArrBezeichnung1 objectAtIndex:Zähler],[ArrBezeichnung2 objectAtIndex:Zähler],[ArrKurzname objectAtIndex:Zähler],[ArrKundennummer objectAtIndex:Zähler]];
- //NSLog(@"%@", SQL);
- if([DB executeUpdate:SQL])
- {
- //NSLog(@"UPDATE erfolgreich");
- }
- else
- {
- //NSLog(@"UPDATE fehlgeschlagen");
- //NSLog(@"Fehler: %@", [DB lastError]);
- }
- }
- else
- {
- SQL = [NSString stringWithFormat: @"INSERT INTO KundenDaten( Kundennummer,Bezeichnung1, Bezeichnung2, Kurzname,PLZ,Stadt,Strasse,Vorwahl,Telefon1,Telefon2,Email,Email_Buchhaltung,Fax,Faxvorwahl) VALUES (%@ ,'%@' ,'%@', '%@', '%@', '%@', '%@', '%@', '%@', '%@', '%@', '%@', '%@', '%@')",[ArrKundennummer objectAtIndex:Zähler],[ArrBezeichnung1 objectAtIndex:Zähler],[ArrBezeichnung2 objectAtIndex:Zähler],[ArrKurzname objectAtIndex:Zähler],[ArrPLZ objectAtIndex:Zähler],[ArrStadt objectAtIndex:Zähler],[ArrStrasse objectAtIndex:Zähler],[ArrVorwahl objectAtIndex:Zähler],[ArrTelefon1 objectAtIndex:Zähler],[ArrTelefon2 objectAtIndex:Zähler],[ArrEmail objectAtIndex:Zähler],[ArrEMail_Buchhaltung objectAtIndex:Zähler],[ArrFax objectAtIndex:Zähler],[ArrFaxvorwahl objectAtIndex:Zähler]];
- if(![DB executeUpdate:SQL])
- {
- NSLog(@"INSERT hat nicht geklappt: %@", SQL);
- NSLog(@"Fehler: %@", [DB lastError]);
- }
- else
- {
- NSLog(@"INSERT erfolgreich");
- }
- }
- }
- [DB close];
- }