キャッシュ ディレクトリから写真を読み込もうとしています。
これは、写真をキャッシュ フォルダーに書き込むコードです。
+(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
URL は正しいのですが、上記の方法を使用しようとすると、次のエラーが発生します。
..... [__NSCFString isFileURL]: unrecognized selector sent to instance 0x8a0c5b0 .....
これは、モデルの URL を取得したときのコードです。
-(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の何が問題になっていますか?どうすれば修正できますか?ありがとうございました
私は解決策を見つけました: モデルのURLをロードするとき、fileURLWithPathメソッドを使用してURLを初期化する必要があります:
NSURL *url = [NSURL fileURLWithPath:[[self.photos objectAtIndex:indexPath.row] valueForKey:@"url"]];
これですべて正常に動作します。ご協力いただきありがとうございます