我有一个图像的URL(从UIImagePickerController获得),但我的内存中不再有该图像(该URL是从之前运行的应用程序中保存的).我可以再次从URL重新加载UIImage吗?

我看到UIImage有一个imageWithContentsOfFile:但是我有一个URL.我可以使用NSData的dataWithContentsOfURL:来读取URL吗?

EDIT1


根据@Daniel的回答,我try 了以下代码,但它不起作用……

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,然后是forwarding,然后是-[NSObject DoesNotReconficateSelector].

你知道为什么我的NSString(photoURL的地址是0x536fbe0)不响应长度吗?为什么它说它不响应-[NSURL长度]?难道它不知道param是一个NSString,而不是一个NSURL吗?

EDIT2


好的,代码的唯一问题是字符串到URL的转换.如果我对字符串进行硬编码,其他一切都可以正常工作.所以我的NSString有点问题,如果我不能弄清楚,我想这应该是另一个问题.插入这一行(我从上面的控制台日志(log)中粘贴了路径)后,效果很好:

photoURL = @"file://localhost/Users/gary/Library/Application%20Support/iPhone%20Simulator/3.2/Media/DCIM/100APPLE/IMG_0004.JPG";

推荐答案

您可以这样做(同步,但紧凑):

UIImage *image = [UIImage imageWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:MyURL]]];

更好的方法是使用苹果的LazyTableImages来保持交互性.

Ios相关问答推荐

在SwiftUI中的2个圆之间画一条直线

PieChartView未以编程方式显示在屏幕上

如何在react 本机模块中使用Bundle.main.Path()在SWIFT中导入assets资源

XcodeCloud生成失败,返回";ci_pre_xcodeBuild.sh是可执行文件,但退出时返回2个退出代码.";

如何使用参与者允许并行读取,但阻止对SWIFT中资源的并发读取和写入?

Flutter 翼项目.升级到XCode 15.0.1`pod install`抛出错误FlutterMacOS.podspec.json 3.13.2的ParserError

如何通过点击按钮滚动到 ScrollView 中的特定视图?

比较 `某个协议` 实例时出现编译错误

为什么 Firebase Messaging 配置对于 IOS native 和 Flutter iOS 不同?

为什么这个 SwiftUI 状态在作为非绑定参数传递时没有更新?

拔下设备后,DriverKit USB 驱动程序 (dext) 进程不会终止

如何在 SwiftUI 中只显示一次随机数组的项目?

async/await、Task 和 [weak self]

Got Unrecognized selector -replacementObjectForKeyedArchiver: 在 Swift 中实现 NSCoding 时崩溃

Xcode 11 向后兼容性:UIWindowScene 仅在 iOS 13 或更高版本中可用

用户拒绝使用后如何提示用户打开位置服务

Sierra 中的安全/协同设计: keys 串忽略访问控制设置和 UI 提示权限

用 NavigationViewController 快速呈现 ViewController

iOS应用程序每隔一次启动就会崩溃,找不到错误

打开 XIB 文件后 Xcode 6.3 冻结/挂起