NSTimer Schleife, URL mit Variable erweitern

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

  • NSTimer Schleife, URL mit Variable erweitern

    Hallo,

    Ich möchte Google Chart Api verwenden um ein Diagram zu zeichnen. Statisch geht das auch sehr gut - so z.B.

    http://chart.apis.google.com/chart?chs=295x180&chco=52ae29&chg=20,50,1,5&cht=ls&chxt=x,y&chd=t:75,25,60,31,25,39,25,31,26,28,80,28,27,31,27,29,26,35,70,25


    Nun würde ich mein Diagram gerne dynamisch zeichnen - und zwar mit dem Wert: addLeistung - d.h. nach jedem Schleifendurchlauf soll die URL um "addLeistung" und eine statische Zahl (20) erweitert werden.
    z.B.


    erster Durchlauf: addLeistung = 20 - d.h. t=20,20
    zweiter Durchlauf: addLeistung = 40 - d.h. t=20,20,40,20
    dritter Durchlauf: addLeistung = 60 - d.h. t=20,20,40,20,60,20


    Mein Code bis jetzt:


    Quellcode

    1. - (void)startTimer {
    2. frameCount = 0;
    3. pauseTimer = [NSTimer scheduledTimerWithTimeInterval:3.0 target:self selector:@selector(myFunction) userInfo:nil repeats:YES];
    4. }




    Quellcode

    1. - (void)myFunction {
    2. NSLog(@"TouchXML");
    3. NSString *url = [[NSString alloc] initWithFormat:@"https://q-gate1.mydatanet.at/query?sessionid=%@&sn=%@&mode=last", sessionSend, qGateSend];
    4. CXMLDocument *xmlParser = [[[CXMLDocument alloc] initWithContentsOfURL:[NSURL URLWithString:url] options:0 error:nil] autorelease];
    5. NSArray *dev_sn = [xmlParser nodesForXPath:@"//ch1" error:nil];
    6. ch0 = [[NSMutableArray alloc] init];
    7. for (CXMLElement *leistungfetch in dev_sn) {
    8. NSLog(@"LeistungFetch = %@", [leistungfetch stringValue]);
    9. addLeistung = [[leistungfetch stringValue] intValue];
    10. NSString *string = [NSString stringWithFormat:@"http://chart.apis.google.com/chart?chs=295x180&chco=52ae29&chg=20,50,1,5&cht=ls&chxt=x,y&chd=t:%d", addLeistung];
    11. [webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:string]]];
    12. NSLog(@"AddLeistung: %d", addLeistung);
    13. }
    14. frameCount++;
    15. if (frameCount >= 300)
    16. [pauseTimer invalidate];
    17. }
    Alles anzeigen




    Hat jemand eine Ahnung wie ich die URL erweitere?


    Vielen Dank für Euren Input!


    lg


    Stefan
    AlpenApps: Apps fürs Iphone aus Österreich

    ACTC - 10.5 & Troubleshooting 10.5
  • Hi Gritsch,

    vielen Dank für Deinen Input! Aber so ganz schlau werde ich nicht daraus:

    Quellcode

    1. for (CXMLElement *leistungfetch in dev_sn) {
    2. NSLog(@"LeistungFetch = %@", [leistungfetch stringValue]);
    3. addLeistung = [[leistungfetch stringValue] intValue]/10;
    4. NSString *string = [NSString stringWithFormat:@"http://chart.apis.google.com/chart?chs=295x180&chco=52ae29&chg=20,50,1,5&cht=ls&chxt=x,y&chd=t:%d,40", addLeistung];
    5. [webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:string]]];
    6. NSLog(@"AddLeistung: %d", addLeistung);
    7. }
    8. frameCount++;
    9. if (frameCount >= 300)
    10. [pauseTimer invalidate];
    Alles anzeigen



    Wo muss ich bei der Schleife die URL initieren? bzw. wie kann ich etwas anhängen? Mit stringByApendingString? Vielen Dank für Deine Mühen!

    lg,

    Stefan
    AlpenApps: Apps fürs Iphone aus Österreich

    ACTC - 10.5 & Troubleshooting 10.5
  • Hi Gritsch,

    vielen Dank für Deinen Input, aber es scheint, als wäre ich zu dumm dafür... :)

    Ich habe jetzt mal die URL in meinen Timer gepackt:

    Quellcode

    1. - (void)startTimer {
    2. frameCount = 0;
    3. pauseTimer = [NSTimer scheduledTimerWithTimeInterval:3.0 target:self selector:@selector(myFunction) userInfo:nil repeats:YES];
    4. urlAppend = [NSString stringWithFormat:@"http://chart.apis.google.com/chart?chs=295x180&chco=52ae29&chg=20,50,1,5&cht=ls&chxt=x,y&chd=t:"];
    5. NSLog(@"urlAppend: %@", urlAppend);
    6. }



    und hier kommt der Fehler:

    Quellcode

    1. for (CXMLElement *leistungfetch in dev_sn) {
    2. NSLog(@"LeistungFetch = %@", [leistungfetch stringValue]);
    3. addLeistung = [[leistungfetch stringValue] intValue]/10;
    4. [urlAppend appendFormat: @"%d,", addLeistung];
    5. [webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:urlAppend]]];
    6. NSLog(@"AddLeistung: %d", addLeistung);
    7. }
    Alles anzeigen



    LeistungsFetch wird noch angezeigt, die Berechnung aus addLeistung funkt. auch, und dann der Crash... Ich nehme an, dass appendFormat nicht richtig umgesetzt wird, zu meiner
    Schande muss ich auch gestehen, dass ich das überhaupt nicht behirne (Logik-mäßig). Im Prinzip sollte die erweiterte URL beim nächsten Durchlauf wieder erweitert werden usw, usw. - im Endeffekt, nach
    300 Durchläufen sollen dann 300 Parameter hinzugefügt werden...

    Vielen Dank für Deine Bemühungen!

    Stefan
    AlpenApps: Apps fürs Iphone aus Österreich

    ACTC - 10.5 & Troubleshooting 10.5
  • Du must doch ein Warning beim Kompilieren bekommen.

    die Klasse NSString hört nämlich nicht auf appendFormat. Das tut nur die Klasse NSMutableString.

    Und jetzt denk mal drüber nach was anders sein muss :)

    Gruß

    Claus

    P.S. Niemals warnings ignorieren. Immer dafür sorgen das man Fehler und Warning frei kompilieren kann.
    2 Stunden Try & Error erspart 10 Minuten Handbuchlesen.

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

    P.S. Niemals warnings ignorieren. Immer dafür sorgen das man Fehler und Warning frei kompilieren kann.

    Selbst wenn er die Warnung beherzigt, wird das Programm weiter abstürzen, weil er ein Problem mit der Speicherverwaltung hat.

    @Stefan
    Versuche mal selbst den Fehler in Deiner Speicherverwaltung zu finden. Irgendwann musst das mal in Fleisch und Blut über gehen. ;) Wenn Du den Fehler selber findest, hilft es Dir mehr, als wenn man es Dir jetzt einfach korrigiert.

    Michael
  • Hi Claus,


    vielen Dank für Dein Feedback! Das ist ja das Problem - es kompiliert ohne Warnungen, weil "urlAppend" vom Typ "NSMutableString ist!


    Beim Initialisieren gebe ich nun folgendes an:


    Quellcode

    1. urlAppend = [NSMutableString stringWithString:@"http://chart.apis.google.com/chart?chs=295x180&chco=52ae29&chg=20,50,1,5&cht=ls&chxt=x,y&chd=t:"];




    aber hier schmeisst es den compiler:



    Quellcode

    1. urlAppend appendFormat: @"%d,0,", addLeistung];



    Es ist zum verzweifeln (für Euch: mit mir - für mich: mit dem Code) :-)


    lg,


    Stefan


    addLeistung = int
    urlAppend = NSMutableString



    AlpenApps: Apps fürs Iphone aus Österreich

    ACTC - 10.5 & Troubleshooting 10.5
  • @Michael:

    vielen Dank - jetzt habe ich es!

    Quellcode

    1. self.urlAppend = [NSMutableString stringWithString:@"http://chart.apis.google.com/chart?chs=295x180&chco=52ae29&chg=20,50,1,5&cht=ls&chxt=x,y&chd=t:"];



    Quellcode

    1. [self.urlAppend appendFormat: @"%i,0,", addLeistung];


    und im dealloc:

    Quellcode

    1. self.urlAppend = 0;


    Nur eines ist mir nicht klar: Warum muss ich manchmal NSStrings mit self.xxx ansprechen und manchmal nicht?

    Vielen Dank für Eure Mühen (mit mir :)

    lg,

    Stefan
    AlpenApps: Apps fürs Iphone aus Österreich

    ACTC - 10.5 & Troubleshooting 10.5