Grafik laden und speichern: Geht mal, geht oft nicht?!

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

  • Grafik laden und speichern: Geht mal, geht oft nicht?!

    Es ist zum Verzweifeln: Dieselbe Methode und dieselben Dateien auf demselben Server und dennoch klappt der Download nur manchmal!

    Ich lade diverse Daten vom Server auf das iPhone und darunter sind auch Images. Diese werden im Ordner Documents gespeichert, damit sie beim nächsten Mal schon verfügbar sind.

    Die Methode dafür ist schlicht diese:

    Quellcode

    1. +(UIImage *) loadAndSaveImageFromURL:(NSString *) urlstring savePath:(NSString *)savePath {
    2. NSURL *url = [NSURL URLWithString:urlstring];
    3. UIImage *image = [UIImage imageWithData:[NSData dataWithContentsOfURL:url]];
    4. NSData *data = nil;
    5. if ([[[urlstring pathExtension] lowercaseString] isEqualToString:@"jpg"]) {
    6. data = UIImageJPEGRepresentation(image, 100);
    7. } else {
    8. data = UIImagePNGRepresentation(image);
    9. }
    10. [data writeToFile:savePath atomically:YES];
    11. return image;
    12. }
    Alles anzeigen



    Geladen werden PNG- und GIF-Dateien, die allesamt klein sind (1-2 KB).

    Mir unverständlich, aber im Debugger schön zu verfolgen ist, dass manchmal url nicht richtig gesetzt ist und machmal nur image = nil bleibt.
    Die URL wird über eine andere Methode gebildet und ist auch immer identisch.
    Die Verbindung läuft lokal im LAN.

    In einem Fall hat der Dialog 5 Images, davon werden (meinstens !) die ersten 2 noch geladen und der Rest bleibt irgendwo stecken.
    JA, auf dem Server sind diese Dateien vorhanden ;)

    Lasse ich die App mit einem entfernten Server kommunizieren, läuft es hingegen langsam, aber richtig...!

    Der Aufruf der Downloads erfolgt synchron, während ich die XML-Daten analysiere.

    Hat da einer von euch eine Idee?
  • Thallius schrieb:

    Du überprüfst nicht ob das stringToUrl geklappt hat, auch nicht ob das DataFromUrl geklappt hat, auch nicht ob das ImageFromData geklappt hat...
    Steht doch in meiner Problembeschreibung:

    Gibbsnich schrieb:

    Mir unverständlich, aber im Debugger schön zu verfolgen ist, dass manchmal url nicht richtig gesetzt ist und machmal nur image = nil bleibt.
    Wenn image nach der Zuweisung immer noch nil ist, hat da offensichtlich was nicht geklappt. :rolleyes:

    Die Frage ist doch, warum dieselbe Methode teilweise fehlschlägt und warum sie bei einer Verbindung zum entfernten Server via Internet *immer* die gewünschten Ergebnisse liefert. (Auch wenn der Transfer der kleinen Dateien gefühlte 5 Sekunden und damit sehr lange dauert. Hat das vielleicht ertwas zu bedeuten?)

    Wenn es Methoden gibt, die mehr Informationen liefern, wäre es hilfreich, wenn man sie beim Namen nennt, dann probiere ich das gerne aus!