Mam NSURL
obiekt, który daje mi ścieżkę do pliku lokalnego (w folderze dokumentów). Chcę wypełnić NSData
obiekt zawartością tego pliku. Próbowałem używać, dataWithContentsOfURL:
ale to się nie udaje. Wiem, że plik istnieje, ponieważ iPhone SDK
zwraca ścieżkę.
Czy ktoś może mi powiedzieć, jak mogę uzyskać NSData
obiekt z URL
pliku lokalnego?
Dzięki.
Odpowiedzi:
// Given some file path URL: NSURL *pathURL // Note: [pathURL isFileURL] must return YES NSString *path = [pathURL path]; NSData *data = [[NSFileManager defaultManager] contentsAtPath:path];
Kod SWIFT:
let data = FileManager.default.contents(atPath: path)
źródło
Aby uzyskać tę pracę, wystarczy wykonać:
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];
źródło
Upewnij się, że lokalny adres URL zaczyna się od „file: //”, wtedy wystarczy zrobić to:
NSData *fileData = [NSData dataWithContentsOfFile:fileURL.path];
źródło
Dla swift3 pomocna okazała się odpowiedź z następującego adresu URL
(Otrzymywałem następującą ścieżkę, po przechwyceniu obrazu za pomocą wtyczki phonegap
file: ///var/mobile/Containers/Data/Application/B64B06DE-7976-45CF-9BE2-661F0F309A06/tmp/abcded.jpg)
https://stackoverflow.com/a/41043447/6383908
jeśli niech videoURL = URL (string: urlString), niech videodata = try? Data (contentOf: videoURL) {// Dodaj tutaj kod Alamofire}
źródło
guard let data = FileManager.default.contents(atPath: path) else { ...
źródło