Ich habe eine URL für ein Bild (habe sie von UIImagePickerController erhalten), aber ich habe das Bild nicht mehr im Speicher (die URL wurde aus einer früheren Ausführung der App gespeichert). Kann ich das UIImage erneut von der URL laden?
Ich sehe, dass UIImage ein imageWithContentsOfFile hat: aber ich habe eine URL. Kann ich die DataWithContentsOfURL: von NSData verwenden, um die URL zu lesen?
EDIT1
basierend auf @ Daniels Antwort habe ich den folgenden Code ausprobiert, aber er funktioniert nicht ...
NSLog(@"%s %@", __PRETTY_FUNCTION__, photoURL);
if (photoURL) {
NSURL* aURL = [NSURL URLWithString:photoURL];
NSData* data = [[NSData alloc] initWithContentsOfURL:aURL];
self.photoImage = [UIImage imageWithData:data];
[data release];
}
Wenn ich es ausgeführt habe, zeigt die Konsole:
-[PhotoBox willMoveToWindow:] file://localhost/Users/gary/Library/Application%20Support/iPhone%20Simulator/3.2/Media/DCIM/100APPLE/IMG_0004.JPG
*** -[NSURL length]: unrecognized selector sent to instance 0x536fbe0
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[NSURL length]: unrecognized selector sent to instance 0x536fbe0'
Wenn ich mir den Aufrufstapel anschaue, rufe ich URLWithString auf, das URLWithString: relativeToURL:, dann initWithString: relativeToURL:, dann _CFStringIsLegalURLString, dann CFStringGetLength, dann forwarding_prep_0 , dann forwarding , dann - [NSObject doesNelRecize.
Irgendwelche Ideen, warum mein NSString (die Adresse von photoURL ist 0x536fbe0) nicht auf die Länge reagiert? Warum sagt es, dass es nicht auf - [NSURL-Länge] reagiert? Weiß es nicht, dass param ein NSString ist, kein NSURL?
EDIT2
OK, das einzige Problem mit dem Code ist die Konvertierung von Zeichenfolge in URL. Wenn ich die Zeichenfolge fest codiere, funktioniert alles andere einwandfrei. Mit meinem NSString stimmt also etwas nicht, und wenn ich es nicht herausfinden kann, sollte das eine andere Frage sein. Wenn diese Zeile eingefügt ist (ich habe den Pfad aus dem obigen Konsolenprotokoll eingefügt), funktioniert dies einwandfrei:
photoURL = @"file://localhost/Users/gary/Library/Application%20Support/iPhone%20Simulator/3.2/Media/DCIM/100APPLE/IMG_0004.JPG";