NSScanner

  • Oh sh.....Ja hast ja recht..wenn man einen myScanner deklariert, sollte man auch myScanner verwenden :) Danke nochmal....jetzt läuft es bestens...bin manchmal etwas schusselig :)

    Jetzt muss ich die Scanroutine nur noch so einstellen, daß nicht über das befüllen des infoViews geskipped wird...Logischerweise kommt dann nichts im Frontend an.
  • so, der letzte beitrag ist ja nun schon ein weilchen her, und man möchte meinen, dass man mit dem vielen sourcecode in dem thread nen NSScanner zum funktionieren bringt.

    Ich hab ein ähnliches Problem zu lösen und will ein Logfile analysieren, im konkreten Fall die anzahl von logins bei meinem FTP-Server berechnen. Hier die entsprechende methode:

    Brainfuck-Quellcode

    1. // --------------------------------------------------------------------
    2. /** Set the number of logins in the logfiles
    3. */
    4. - (void) setLogins
    5. {
    6. int i, tmplogins=0;
    7. bool login = false;
    8. for(i=0; i<[array count]; i++)
    9. {
    10. NSString* str = [array objectAtIndex: i];
    11. NSScanner* scanner = [NSScanner scannerWithString: str];
    12. login = [scanner scanString: @"is now logged in" intoString: nil];
    13. if(login)
    14. {
    15. tmplogins+=1;
    16. }
    17. }
    18. logins=[[NSNumber alloc] initWithInt: tmplogins];
    19. }
    Alles anzeigen


    In den NSStrings, die ich aus dem array raushole, stehen die korrekten Daten, aber der scanner gibt partout kein TRUE bzw. YES zurück. hab ich da noch ein verständnisproblem?
  • Hier die korrgierte Methode:

    Brainfuck-Quellcode

    1. // --------------------------------------------------------------------
    2. /** Set the number of logins in the logfiles
    3. */
    4. - (void) setLogins
    5. {
    6. int i, tmplogins=0;
    7. bool login = false;
    8. for(i=0; i<[array count]; i++)
    9. {
    10. NSString* str = [array objectAtIndex: i];
    11. NSScanner* scanner = [NSScanner scannerWithString: str];
    12. [scanner scanUpToString: @"is now logged in" intoString: nil];
    13. login = [scanner scanString: @"is now logged in" intoString: nil];
    14. if(login)
    15. {
    16. tmplogins+=1;
    17. }
    18. }
    19. logins=[[NSNumber alloc] initWithInt: tmplogins];
    20. }
    Alles anzeigen
    Warum das so funktioniert? Hier der entscheidende Auszug aus der Dokumentation:
    Returns YES if stringValue matches the characters at the scan location

    Michael
  • arr, herzlichen dank dafür, jetzt geht's natürlich....

    @snowman: das "nil" heisst ja nur, dass ich das gefundene resultat nicht in einen String reingeschrieben haben will, mir genügt, wenn der scanner mir true oder false zurückgibt...