Mam adres URL obrazu (otrzymałem go z UIImagePickerController), ale nie mam już obrazu w pamięci (adres URL został zapisany z poprzedniego uruchomienia aplikacji). Czy mogę ponownie załadować UIImage z adresu URL?
Widzę, że UIImage ma imageWithContentsOfFile: ale mam adres URL. Czy mogę użyć dataWithContentsOfURL: NSData do odczytania adresu URL?
EDYCJA1
na podstawie odpowiedzi @ Daniela Wypróbowałem następujący kod, ale nie działa ...
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];
}
Kiedy go uruchomiłem, konsola pokazuje:
-[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'
Patrząc na stos wywołań, wywołuję URLWithString, który wywołuje URLWithString: relativeToURL:, a następnie initWithString: relativeToURL:, następnie _CFStringIsLegalURLString, następnie CFStringGetLength, następnie forwarding_prep_0 , a następnie forwarding , a następnie - [NSObject doesSotRognize].
Jakieś pomysły, dlaczego mój NSString (adres photoURL to 0x536fbe0) nie odpowiada długości? Dlaczego jest napisane, że nie odpowiada - [długość NSURL]? Czy nie wie, że parametr to NSString, a nie NSURL?
EDYCJA2
OK, jedynym problemem z kodem jest konwersja ciągu na adres URL. Jeśli zakoduję ciąg na stałe, wszystko inne działa dobrze. Więc coś jest nie tak z moim NSString i jeśli nie mogę tego rozgryźć, myślę, że to powinno być inne pytanie. Po wstawieniu tej linii (wkleiłem ścieżkę z dziennika konsoli powyżej), działa dobrze:
photoURL = @"file://localhost/Users/gary/Library/Application%20Support/iPhone%20Simulator/3.2/Media/DCIM/100APPLE/IMG_0004.JPG";