web-dev-qa-db-ja.com

iPhone-ローカルファイルのURLからのNSData

ローカルファイル(ドキュメントフォルダー内)のパスを提供するNSURLオブジェクトがあります。 NSDataオブジェクトにこのファイルの内容を入力します。 dataWithContentsOfURL:を使用してみましたが、これは失敗します。 iPhone SDKがパスを返すため、ファイルが存在することを知っています。

ローカルファイルのNSDataからURLオブジェクトを取得する方法を教えてください。

ありがとう。

81
lostInTransit
// Given some file path URL: NSURL *pathURL
// Note: [pathURL isFileURL] must return YES
NSString *path = [pathURL path];
NSData *data = [[NSFileManager defaultManager] contentsAtPath:path];
160
Tim

この作業を行うには、次を実行するだけです。

NSURL *imgPath = [[NSBundle mainBundle] URLForResource:@"search" withExtension:@"png"];
NSString*stringPath = [imgPath absoluteString]; //this is correct  

//you can again use it in NSURL eg if you have async loading images and your mechanism 
//uses only url like mine (but sometimes i need local files to load)
NSData *data = [NSData dataWithContentsOfURL:[NSURL URLWithString:stringPath]];
UIImage *ready = [[[UIImage alloc] initWithData:data] autorelease];
28
Marcin Małysz

ローカルURLが "file://"で始まっていることを確認してくださいこの場合、これを行う必要があります。

 NSData *fileData = [NSData dataWithContentsOfFile:fileURL.path];
2
ahbou

Swift3の場合、次のURLからの回答が役に立ちました

(phonegapプラグインを使用して画像をキャプチャした後、次のパスを取得していました

file:///var/mobile/Containers/Data/Application/B64B06DE-7976-45CF-9BE2-661F0F309A06/tmp/abcded.jpg)

https://stackoverflow.com/a/41043447/6383908

let videoURL = URL(string:urlString)、let let videodata = try? Data(contentsOf:videoURL){//ここにAlamofireのコードを追加}

0
Chirag Purohit