2016-04-02 3 views
1

Я получаю различные форматы документов с расширением как .png, .txt, .jpg ,, mp3 и т. Д. Как NSData formatt, мне нужно сохранить их локально и просмотреть, я пробовал этоКак сохранить NSData локально

NSData* conData = [convStr dataUsingEncoding:NSUTF8StringEncoding]; 
NSLog(@"the converted string to nsdata is :%@",conData); 

[conData writeToFile:@"Filename.txt" atomically:YES]; 

, но, к сожалению, это не работает. Может кто-нибудь помочь.

+0

Возможный дубликат [Как скачать и сохранить файл на локальном прошивкой, используя Objective C?] (Http://stackoverflow.com/questions/5323427/how-do-i-download-and-save-a-file-local-on-ios-using-objective-c) –

+0

Вы предоставили каталог, в котором следует сохранять документы, библиотеку и кеш-файлы. .. Вам не хватает этого кода. –

+0

@ arun Gupta вы можете помочь мне с кодом. – Arun

ответ

1

Примечание - запись NSData в файл представляет собой операцию ввода-вывода, которая может блокировать отправку основного потока, а также предоставить путь к файлу для записи вместо имени файла.

Об этом пишет файл для меня

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0), ^{ 
    // Generate the file path 
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES); 
    NSString *documentsDirectory = [paths objectAtIndex:0]; 
    NSString *dataPath = [documentsDirectory stringByAppendingPathComponent:@"Filename.txt"]; 

    // Save it into file system 
    [data writeToFile:dataPath atomically:YES]; 
}); 
+0

NSString * dataPath = [documentsDirectory stringByAppendingPathComponent: @ "Filename.txt"]; если я использую это, я могу сохранить файлы с расширениями .txt или всеми другими форматами, такими как .jpg, .pdf, .png.mp3 и т. д. – Arun

+0

@LeoDabus его исходный код находится в объективе ** c **, который он опубликовал in question – swiftBoy

+1

@Arun Да вы можете сохранить любой тип файла. Лучшим подходом было бы создать общий метод и передать им paramater как NSData и fileName. Используя fileName, вы также можете получить расширение для изменения реализации для определенного типа файла и с помощью имени файла он сохранит файл с нужным расширением. –

0

Вы дали только имя файла (Filename.txt) не весь путь к файлу вот почему ваш код не работает.

Проверьте строку ниже, вы получите представление.

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,  NSUserDomainMask, YES); 
NSString *documentsDirectory = [paths objectAtIndex:0]; 

NSString *filePath = [NSString stringWithFormat:@"%@/%@", documentsDirectory,@"Filename.txt"]; 
[urlData writeToFile:filePath atomically:YES]; 
0

вы должны пройти правильный путь в writeToFile методе

NSString *docsDir; 
NSArray *dirPaths; 

dirPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
docsDir = [dirPaths objectAtIndex:0]; 
NSString *targetPatch = [[NSString alloc] initWithString: [docsDir stringByAppendingPathComponent:@"Filename.text"]]; 
[data writeToFile:targetPatch atomically:YES]; 
Смежные вопросы