У мене є URL-адреса для зображення (отримано його від UIImagePickerController), але я більше не маю цього зображення в пам'яті (URL-адресу було збережено з попереднього запуску програми). Чи можу я знову завантажити UIImage з URL-адреси?
Я бачу, що UIImage має зображенняWithContentsOfFile: але у мене є URL. Чи можу я використовувати дані NSDataWithContentsOfURL: для читання URL-адреси?
EDIT1
на основі відповіді @ Даніеля я спробував наступний код, але він не працює ...
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];
}
Коли я запустив його, консоль показує:
-[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'
Дивлячись на стек викликів, я викликаю URLWithString, який викликає URLWithString: RelaToURL:, потім initWithString: RelaToURL:, потім _CFStringIsLegalURLString, потім CFStringGetLength, потім переадресація_преп_0 , потім переадресація , потім - [NSObco,
Будь-які ідеї, чому мій NSString (адреса photoURL 0x536fbe0) не відповідає довжині? Чому він каже, що не відповідає - [довжина NSURL]? Хіба не знає, що парам - це NSString, а не NSURL?
EDIT2
Гаразд, єдина проблема з кодом - це перетворення рядка в URL. Якщо я жорстко кодую рядок, все інше працює добре. Так що з моїм NSString щось не так, і якщо я не можу цього розібратися, я думаю, це повинно виникнути як інше питання. З цим вставленим рядком (я вставив шлях із журналу консолі вище), він працює добре:
photoURL = @"file://localhost/Users/gary/Library/Application%20Support/iPhone%20Simulator/3.2/Media/DCIM/100APPLE/IMG_0004.JPG";