如何在本地存储NSData

时间:2016-04-02 06:15:16

标签: ios objective-c ios7 nsdata

我得到各种格式的文件扩展名为.png,.txt,.jpg,mp3等作为NSData格式,我需要在本地存储并查看它,我试过这个

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

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

但不幸的是,任何人都可以提供帮助。

3 个答案:

答案 0 :(得分:1)

注意 - 将NSData写入文件是一个IO操作,可能会阻止主线程使用调度,也只提供文件路径来代替文件名。

这为我写文件

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];
});

答案 1 :(得分: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];

答案 2 :(得分: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];