Jetzt versteh ich gar nichts mehr :-(

  • Nein, ich hab eine Klasse die einen NSMutableArray hält und füttere ihn über eine syntesized property(strong) aus einer anderen heraus, sobald ich aber dann ein objekt abfrage sind die werte in den Objekten der arrays(NSString) "(null)" wenn ich allerdings die description printen lasse passt alles... :-S sowas hab ich noch nie gesehen

    lg
  • Ich denke nicht, ich hab euch mal den Code reinkopiert...

    hier vl seht ihr ja was..

    Quellcode

    1. -(void)importSampleData:(NSString *)image file:(NSString *)textFile typ:(NSString *)typ
    2. {
    3. if(![libary libaryFoodArray]){NSLog(@"Libaryarray is nil!!");}
    4. BOOL getFromHttp = YES;
    5. NSString *content=@"";
    6. if(getFromHttp)
    7. {
    8. [self getLatest];
    9. }
    10. NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    11. NSString *documentsDirectory = [paths objectAtIndex:0];
    12. NSString *fullPath = [documentsDirectory stringByAppendingPathComponent:@"/XXX.txt"];
    13. content = [NSString stringWithContentsOfFile:fullPath encoding:NSUTF8StringEncoding error:nil];
    14. NSArray *lines = [content componentsSeparatedByString:@"\n"];
    15. NSLog(@"Import Called! Lines: %i",lines.count);
    16. for (int i=1;i<lines.count-1;i++) {
    17. //Split the line
    18. NSArray *data = [[lines objectAtIndex:i] componentsSeparatedByString:@";"];
    19. //Hand over the Data
    20. Food *tempFood = [[Food alloc] init];
    21. tempFood.Title = [data objectAtIndex:0];
    22. tempFood.Gramm = [data objectAtIndex:1];
    23. tempFood.CarbsPerGramm = [data objectAtIndex:2];
    24. tempFood.Sugar = [data objectAtIndex:3];
    25. tempFood.Fat = [data objectAtIndex:4];
    26. [tempFood.unitSizeArray addObject:[NSString stringWithFormat:@"Normal;%@",[data objectAtIndex:5]]];
    27. tempFood.picture = [UIImage imageNamed:image];
    28. tempFood.typ = typ;
    29. //Add to the FoodArray
    30. [[libary libaryFoodArray] addObject:tempFood];
    31. NSLog(@"Added:\n%@",tempFood.description);
    32. }
    33. }
    34. -(void)getLatest
    35. {
    36. NSData *data = [[NSData alloc] initWithContentsOfURL:[NSURL URLWithString:@"http://www.XXXX/data/latest.zip"]];
    37. NSString *textString = @"";
    38. NSArray *paths = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES);
    39. NSString *path = [paths objectAtIndex:0];
    40. NSString *zipPath = [path stringByAppendingPathComponent:@"latest.zip"];
    41. [data writeToFile:zipPath options:0 error:nil];
    42. ZipArchive *za = [[ZipArchive alloc] init];
    43. if ([za UnzipOpenFile: zipPath]) {
    44. BOOL ret = [za UnzipFileTo: path overWrite: YES];
    45. if (NO == ret){}
    46. [za UnzipCloseFile];
    47. NSString *textFilePath = [path stringByAppendingPathComponent:@"XXX.txt"];
    48. textString = [NSString stringWithContentsOfFile:textFilePath encoding:NSASCIIStringEncoding error:nil];
    49. }
    50. NSString *documentsDirectory = [paths objectAtIndex:0];
    51. NSString *fullPath = [documentsDirectory stringByAppendingPathComponent:@"/YYY.txt"];
    52. BOOL wasOkay = [textString writeToFile:fullPath atomically:YES encoding:NSUTF8StringEncoding error:nil];
    53. if(wasOkay){NSLog(@"Writing Import.txt was okay!");}
    54. }
    Alles anzeigen


    und eben wenn das fertig ist, hab ich im libaryfoodarray das oben beschriebene Problem, wenn ich gleich von haus aus auf eine txt zugreife die ich nicht runterlade, dann hab ich das problem nicht... :-/
    ziehmlich seltsam.. hoffe ihr könnt mir helfen ! :wacko:

    lg faulk
  • tomekcp schrieb:

    Das beste Instrument um ein Fehler zufinden.

    Und ich Depp dachte dafür wären Breakpoints da.
    Ich wusste doch, ich mache irgendwas falsch!
    «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
  • Als ehrlich gesagt, habe ich noch nie breakpoints gesetzt. Vielleicht sollte ich mich damit auseinandersetzen. Ja, du hast recht, Lucas devil. Man kann dann im Debugger die Variablen uperprufen. Wenn man breakpoints setzt. Komische Angewohnheit von mir. Aber ich glaube beide Wege helfen, oder? Lg tomekcp
    LG Thomas
  • Dann mache ich das sehr umständlich. Lasse mir die Variablen über nslog ausgegeben. Finde die Konsole so toll. ;) so schwarz mit weißer Schrift:-) Kann man denn Debugger auch auf schwarz mit weißer Schrift ändern? Wie übergibst du die Data in tempfood.title?
    LG Thomas
  • Vielleicht solltest Du mal damit anfangen Deine Rückgabewerte zu testen. Ich frage mich echt wann das aus der Mode gekommen ist. Wenn ich eine Methode/Funktion habe

    Rückgabewert=Mehtode/Funktion();

    habe ich früher gelernt das der nächste Befehl Immer ein

    if(Rückgabewert)

    ist. Aber das brauchte heute wohl nicht mehr. Naja zumindest solange bis, wie hier, dann plötzlich vollkommen unerklärliche Fehler auftauchen. Alleine schon das heute immer

    Object=[Klasse alloc] init];

    als absolut selbstverständlich funktionierend angenommen wird. Da kommt gar keiner auf die Idee das das mal fehlschlagen könnte und sei es nur weil kein Speicher mehr dafür da ist ?

    Gruß

    Claus
    2 Stunden Try & Error erspart 10 Minuten Handbuchlesen.

    Pre-Kaffee-Posts sind mit Vorsicht zu geniessen :)