Empfangene Daten auf programmtechnischem Wege in Dictionary nach und nach einfügen

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

  • Ganz einfach: Du unterscheidest nicht zwischen Daten, die sich im Code befinden und Daten, die von einem Server kommen. Da dies ein Problem ist, welches unabhängig von irgendeiner Programmiersprache mit irgendeinem Framework auf irgendeinem Betriebssystem ist, stellt sich mir die Frage.

    Im Übrigen hast du den entsprechenden Code bereits von Lucas bekommen …
    Es hat noch nie etwas gefunzt. To tear down the Wall would be a Werror!
    25.06.2016: [Swift] gehört zu meinen *Favorite Tags* auf SO. In welcher Bedeutung von "favorite"?
  • Ich sprach nicht vom Format, sondern vom Empfang.
    Das sind keine empfangenden Daten.

    Soll ich es noch enmal mit Ausdruckstanz versuchen?

    Es ist ja schwierig, jemanden zu helfen, der das Grundproblem nicht versteht und stattdessen von seinen Erfahrungen schwadroniert.
    Es hat noch nie etwas gefunzt. To tear down the Wall would be a Werror!
    25.06.2016: [Swift] gehört zu meinen *Favorite Tags* auf SO. In welcher Bedeutung von "favorite"?
  • Also schön, dann halt mal funktionierenden Code.
    Zumindest hat der Compiler 'Safari' keine Warnings oder Errors geworfen.

    C-Quellcode

    1. -(NSDictionary*)collectServerData:(NSArray*)serverList
    2. {
    3. NSMutableDictionary* completeServerInfo = [NSMutableDictionary dictionary];
    4. for( id currentServer in serverList)
    5. {
    6. NSString* serverData = [NSString stringWithContentsOfURL:[currentServer infoFileURL]];
    7. NSDictionary* parsedData = [self parseServerData:[serverData componentsSeparatedByString:@"\\"]];
    8. [completeServerInfo setObject:parsedData forKey:[NSString stringWithFormat:@"server%d", [serverList indexForObject:currendServer]]];
    9. }
    10. return completeServerInfo;
    11. }
    12. -(NSDictionary*)parseServerData:(NSArray*)serverInfos
    13. {
    14. int i = 1;
    15. NSMutableDictionary* currendServerInfos = [NSMutableDictionary dictionary];
    16. for(i; i < [serverInfos count]; i+=2)
    17. {
    18. [currentServerInfos addObject:[serverInfos objectAtIndex:(i+1)] forKey:[serverInfos objectAtIndex:i];
    19. }
    20. return currentServerInfos;
    21. }
    Alles anzeigen

    Noch mehr Arbeit (Errorhandling, Datenmodellierung etc.) nehm ich dir aber echt nicht ab.
    +tza+
    «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
  • Hallo,

    so es hat geklappt - die Sache mit dem Dictionary ist nun lauffähig:

    [Blockierte Grafik: http://bilder.clansurf.de/cms/images/GSS2.jpg]

    Ein kleiner Auszug nach dem Beispiel welches hier zuvor genannt wurde:

    Quellcode

    1. ...
    2. // Die Werte zuvor in ein Array sammeln (dieser ganze Teil läuft in einer Schleife nach dem Empfang der Serverinfo)
    3. [tmpArray addObject:strKey];
    4. [tmpArray addObject:strWert];
    5. if( [tls NSStringFind:(NSString *)strKey find:@"virtualserver_autostart"] == 0)
    6. {
    7. // Die Werte in ein Array
    8. NSMutableDictionary *myTempDict = (NSMutableDictionary *)[[NSMutableDictionary alloc] init];
    9. for(int i=0; i < [tmpArray count]; i+=2)
    10. {
    11. [myTempDict setObject:[tmpArray objectAtIndex:(i+1)] forKey:[tmpArray objectAtIndex:i]];
    12. }
    13. // Ab ins Dict
    14. [md setObject:myTempDict forKey:[NSString stringWithFormat:@"server%d",nCounter]];
    15. // Durchlaufzaehler
    16. nCounter++;
    17. }
    Alles anzeigen


    cu @all - und Danke an alle die geholfen haben! 8)
    so long,
    MasterBlaster.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von MasterBlaster ()

  • Hmmm, Deine Frage ist etwas wirr und deshalb ist mir (wie Lucas wohl auch) nicht ganz klar, was Du eigentlich willst. Du willst eine XML-Plist-Datei inkrementell laden? Klingt für mich eindeutig nach Event-driven XML Parsing -> NSXMLParser. Erheblich zuverlässiger als händisches Friemeln mit Strings.
    Multigrad - 360°-Produktfotografie für den Mac
  • Hi mattik,

    nein, nicht inkrementell laden via XML oder ähnliches... :rolleyes:

    Die eigentlichen Daten welche ich zu Begin im binären Format via TCP/IP bzw. UDP auf Anfrage hin vom angesprochenen
    Server erhalte (spezielles nicht genormtes Rohdatenformat), muss ich danach erst sortieren und entsprechend dann noch
    den Parametern welche ich dann bennen muss, noch zuordnen.

    Die Rohdaten die ich somit über das Netzwerk direkt vom Server erhalte, sehen wie in Nachricht Nr. 15 dieses Threads aus.
    Dieses dort gezeigte "Hex-Listing" exklusive der darunter zur Bemerkung eingesetzten Datenstruktur/struct) ist NICHT aus
    einer Datei heraus entstanden (wie zuvor auch wahrscheinlich angenommen).

    Dies sind wirklich die reinen Datenpaketinhalte welche via TCP/IP-Pakete vom Server versendet wurden als Antwort
    auf meine vorherige Anfrage. Es handelt sich dabei weder um einen HTTP-Dienst, noch um sonstige bekannte
    Serverdienste und somit Protokolle.

    Daher ist das alles auch nicht ganz so einfach... 8|

    Im zweiten Schritt letztendlich wollte ich ein Dict mit genau diesen Daten (sortiert bzw. mit "keys") füllen, um später einen
    einfachen Abruf dieser nun mittlerweile geordneten Daten zu gewährleisten. Also wandelte ich diesen "Binärmüll" erst einmal
    in "verständliche" Strings, einen String mit dem Parametername, den zweiten mit einen string als "Wert". Zu sehen in diesem
    Thread in Nachricht Nr.3. Diese so entstandenen Informationen als mittlerweile lesbare Information (Strings, Array) wollte
    ich dann wiederum in einem UITableView (für jeden einzelnen virtuellen Server) anzeigen lassen.

    Und, es klappt ja nun mittlerweile auch, wie man in dem Bild zuvor sehen kann. :P
    so long,
    MasterBlaster.
  • Aah! Du wolltest einen Parser!

    Egal, wie geordnet (oder ungeordnet) das Zeug ist - es gibt immer ein Protokoll. Und das hat immer eine Syntax und eine Semantik. Ob die jemand mal expliziert hat ist eine andere Frage.

    Auch wenn's jetzt erstmal geht, würde ich Dir dringend raten, etwas zu Parsern zu lesen. Gerade mit tainted-Daten (sprich: alles, was von außen kommt) kann es sonst ganz schnell ganz großen Ärger geben.
    Multigrad - 360°-Produktfotografie für den Mac
  • Hi mattik,

    nun dann werde ich das mal die Tage tun. :P

    Was das Problem mit den Daten von Außen betrifft, hatte ich sowieso schon einiges an Arbeit mit, da diese je nach dem eh schon "variabel" sind, in der Länge, sowie als auch in den Bezeichnungen - teilweise nur von der Position abhängig, oder gekennzeichnet durch nur ein CR/LF Zeilenzeichen als Marker - also, wie oder was soll ich es sagen - nicht linear und somit immer der erwarteten Struktur entsprechend - vom Aufbau her also auch verschieden. Aber naja, schauen wir mal... ^^

    Sollten z.B. div. mir nicht bekannte Erweiterungen auf diesem Server installiert sein, ändert sich schon in der Mitte, oder am Ende des von außen kommenden Datenstromes schon das Format, sowie als auch die Bennung div. Daten. Eine Zuordnung zu vorherigen "bekannten" Bezeichnern ist dann schon mehr als problematisch.
    so long,
    MasterBlaster.

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von MasterBlaster ()