如何在本地缓存上关闭并存储文本文件

时间:2015-05-07 11:10:27

标签: ios objective-c

我正在开发一个IOS应用程序..从URL下载数据并保存在本地缓存中..但我正在使用此代码..第一次数据可以存储在本地缓存中,也可以在文本字段中读取。但是删除应用程序在模拟器上运行并再次将文本文件存储在本地缓存中。文件无法存储。非常感谢任何帮助或建议。提前谢谢。

NSURL *url = [NSURL URLWithString:@"http://webapp.opaxweb.net/books/"];
NSData *data_file = [[NSData alloc]initWithContentsOfURL:url];
NSString *resourceDocPath = [[NSString alloc] initWithString:[[[[NSBundle mainBundle]  resourcePath] stringByDeletingLastPathComponent]stringByAppendingPathComponent:@"Documents"]];
NSString *filepath = [resourceDocPath stringByAppendingPathComponent:@"gurugranthsahib.txt"];
[data_file writeToFile:filepath atomically:YES];

NSLog(@"%@",filepath);
NSString* content = [NSString stringWithContentsOfFile:filepath
                                              encoding:NSUTF8StringEncoding
                                                 error:NULL];

1 个答案:

答案 0 :(得分:0)

iOS不允许写入应用包。

通常将数据写入Documents目录:

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths firstObject];
NSString *filePath = [documentsDirectory stringByAppendingPathComponent:fileName];

注意:

使用具有错误参数的方法调用是更好的做法,因此当出现错误时,可以检查错误。在这种情况下,您可以使用:

NSError *error;
BOOL status = [string writeToFile:filePath options:NSDataWritingAtomic error:&error];
if (status == NO) {
    NSLog(@"error: %@", error)
}