ฉันมี URL สำหรับรูปภาพ (ได้มาจาก UIImagePickerController) แต่ฉันไม่มีรูปภาพในหน่วยความจำอีกต่อไป (URL ถูกบันทึกจากการเรียกใช้แอพก่อนหน้านี้) ฉันสามารถโหลด UIImage จาก URL ซ้ำได้หรือไม่
ฉันเห็นว่า UIImage มี imageWithContentsOfFile: แต่ฉันมี URL ฉันสามารถใช้ dataWithContentsOfURL ของ NSData เพื่ออ่าน URL ได้หรือไม่
แก้ไข 1
จากคำตอบของ @ Daniel ฉันลองใช้รหัสต่อไปนี้ แต่ไม่ได้ผล ...
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: relativeToURL :, แล้ว initWithString: relativeToURL :, แล้ว _CFStringIsLegalURLString แล้ว CFStringGetLength แล้วforwarding_prep_0แล้วส่งต่อแล้ว - [NSObject doesNotRecognizeSelector]
มีความคิดว่าทำไม NSString ของฉัน (ที่อยู่ของ photoURL คือ 0x536fbe0) ไม่ตอบสนองต่อความยาว? ทำไมจึงบอกว่าไม่ตอบสนองต่อ - [NSURL length]? ไม่รู้ว่า param เป็น NSString ไม่ใช่ NSURL?
แก้ไข 2
ตกลงปัญหาเดียวของรหัสคือสตริงที่จะแปลง URL ถ้าฉันฮาร์ดโค้ดสตริงทุกอย่างก็ใช้ได้ดี มีบางอย่างผิดปกติกับ NSString ของฉันและถ้าฉันคิดไม่ออกฉันเดาว่าน่าจะเป็นคำถามอื่น เมื่อแทรกบรรทัดนี้ (ฉันวางเส้นทางจากบันทึกคอนโซลด้านบน) มันใช้งานได้ดี:
photoURL = @"file://localhost/Users/gary/Library/Application%20Support/iPhone%20Simulator/3.2/Media/DCIM/100APPLE/IMG_0004.JPG";