在 Documents 文件夹中写入文件列表并保存在内存中
Posted
技术标签:
【中文标题】在 Documents 文件夹中写入文件列表并保存在内存中【英文标题】:Write a list of files in the Documents folder and keep them in memory 【发布时间】:2013-01-07 08:41:30 【问题描述】:我有几个文件要保存在 Documents 文件夹中,这个文件列表放在一个可变数组中。文件必须保留在 iPhone 应用程序的内存中也关闭。第一个文件已保存,但是当我更改视图控制器然后返回时,可变数组变为空。如何将内存中的数据保存在 Documents 文件夹中?
在DetailExpViewController.h中
//....
@property (nonatomic, strong)NSMutableArray *arrayFavorites;
@property (nonatomic, assign)BOOL existsArray;
//....
@end
在DetailExpViewController.m中
- (void)viewDidLoad
//.....
if (!self.existsArray)
/*when I load the view controller this array is always nil even
has already been created*/
self.arrayFavorites =[[NSMutableArray alloc]init];
else
NSLog(@"The array exists");
//....
-(void) addFavorites:(id)sender
//.....
NSArray *paths = NSSearchPathForDirectoriesInDomains
(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString * text= [NSString stringWithFormat:@"%@.txt",self.name];
NSString * documentsPath = [documentsDirectory stringByAppendingPathComponent: text];
[self.arrayFavorites addObject:text];
[self.arrayFavorites writeToFile:documentsPath atomically:YES];
self.existsArray=YES;
for (id obj in self.arrayFavorites)
NSLog(@"%@", self.arrayFavorites);
//only writes the file at the time, then it is deleted
【问题讨论】:
在视图中 didload 数组总是 nil 然后你分配它 为什么不总是使用 sqlite 来存储数据 因为只是文件列表 【参考方案1】:你可以在Document Directory
中save NSArray
喜欢this。
注意:saving
和 retrieving
filename
仍然是 same
。
它也是easy retrieve
saved
array
来自doc dir
。
编辑:如果data
是complex and large
,最好使用SQLITE
。
编辑:在view Controller's
添加到favourite
按钮点击event
:
//check favourite saved in doc dir
if(!saved) //not saved
//NSMutableArray has not data first time
//[NSMutableArray addObject:newFavourite];
//save new data in doc dir
else // saved
//firstly retrieve data from doc dir as NSMutableArray
//[NSMutableArray addObject:newFavourite];
//Now save again NSMutableArray in doc dir.
following
这些instruction
文件保留在permanently
中Documents folder
。
【讨论】:
我有一个可变数组不是如图所示的静态数组。在我的应用程序中有一个视图控制器,如果用户按下按钮,其中有一个名为“添加收藏夹”的按钮,文件应保存在 Documents 文件夹中,否则不保存。我无法提前知道什么会拯救用户,所以我创建了一个可变数组。这些文件必须永久保留在 Documents 文件夹中。我该怎么办? 参考链接示例显示静态数据。但你可以拥有动态数据以上是关于在 Documents 文件夹中写入文件列表并保存在内存中的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Documents 文件夹中保存 UIImagePicker 中的 UIImage 并获取路径字符串以保存在 Swift 中的 Core Data 中
WPF:在 Documents 文件夹中保存和读取 Json 文件