web-dev-qa-db-fra.com

iPhone - NSData à partir de l'URL du fichier local

J'ai un objet NSURL qui me donne le chemin d'un fichier local (dans le dossier de documents). Je veux remplir un objet NSData avec le contenu de ce fichier. J'ai essayé d'utiliser dataWithContentsOfURL: mais cela a échoué. Je sais que le fichier existe car l'iPhone SDK renvoie le chemin.

Quelqu'un peut-il me dire s'il vous plaît comment je peux obtenir un objet NSData à partir de la URL d'un fichier local?

Merci.

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

Pour obtenir ce travail, vous devez juste faire:

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

Assurez-vous que votre URL locale commence par "fichier: //" .__

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

Pour Swift3, la réponse de l'URL suivante a été utile.

(J'obtenais le chemin suivant, après avoir capturé l'image à l'aide du plugin phonegap 

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

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

si videoURL = URL (string: urlString), laissez videodata = try? Données (contentOf: videoURL) { // Ajouter le code d'Alamofire ici }

0
Chirag Purohit