我正在尝试从缓存目录中加载照片。
这是我将照片写入缓存文件夹的代码:
+(BOOL)writeAData:(NSData *)imageData atURL:(NSURL *)fileUrl
{
return [imageData writeToURL:fileUrl atomically:YES];
}
此代码工作正常,但是当我尝试从缓存文件夹中加载代码时遇到问题:
我在块中使用initWithContentsOfURL方法:
NSData *imageData = [[NSData alloc] initWithContentsOfURL:self.imageUrl];
这是url的格式
file://localhost/Users/MarcoMignano/Library/Application%20Support/iPhone%20Simulator/6.1/Applications/0E8E54D8-9634-41CF-934B-A7315411F12F/Library/Caches/image_cache/Meyer%20Library.jpg
网址是正确的,但是当我尝试使用上述方法时,我收到此错误:
..... [__NSCFString isFileURL]: unrecognized selector sent to instance 0x8a0c5b0 .....
这是我拿模特网址时的代码:
-(void)viewWillAppear:(BOOL)animated
{
[super viewWillAppear:YES];
self.photos = [PhotoAlreadyDisplayed getAllPicture];
}
-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
if ([sender isKindOfClass:[UITableViewCell class]]) {
NSIndexPath *indexPath = [self.tableView indexPathForCell:sender];
if (indexPath) {
if ([segue.identifier isEqualToString:@"Show Image"]) {
if ([segue.destinationViewController respondsToSelector:@selector(setImageUrl:)]) {
NSURL *url = [[self.photos objectAtIndex:indexPath.row] valueForKey:@"url"];
[segue.destinationViewController performSelector:@selector(setImageUrl:) withObject:url];
[segue.destinationViewController setTitle:[self titleForRow:indexPath.row]];
}
}
}
}
}
网址有什么问题?我该怎么办呢?谢谢
我找到了解决方案: 当我加载模型的url时,我需要使用fileURLWithPath方法初始化url:
NSURL *url = [NSURL fileURLWithPath:[[self.photos objectAtIndex:indexPath.row] valueForKey:@"url"]];
现在一切正常,非常感谢你的帮助
答案 0 :(得分:0)
[NSData initWithContentsOfURL:]
期望传入的参数为NSURL
。看起来您可能传入的是字符串,而不是NSURL
。是这种情况吗?
编辑:只是幽默我 - 尝试更换
NSData *imageData = [[NSData alloc] initWithContentsOfURL:self.imageUrl];
与
NSData *imageData = [[NSData alloc] initWithContentsOfURL:[NSURL URLWithString:self.imageUrl]];
会发生什么?
虽然看起来您没有成功从initWithContentsOfURL:
返回,但下面的代码段可能对其他人有用:
NSError *error;
NSData *data = [[NSData alloc] initWithContentsOfURL:TestURL options:0 error:&error];
if(data) {
NSLog(@"Success");
}
else {
NSLog(@"Failed: %@", Error);
}
答案 1 :(得分:0)
解决方案:当我加载模型的url时,我需要使用fileURLWithPath方法初始化url:
NSURL *url = [NSURL fileURLWithPath:[[self.photos objectAtIndex:indexPath.row] valueForKey:@"url"]];
现在一切正常,非常感谢你的帮助