在 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 Directorysave NSArray 喜欢this。

注意savingretrieving filename 仍然是 same

它也是easy retrieve saved array 来自doc dir

编辑:如果datacomplex 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 文件保留在permanentlyDocuments folder

【讨论】:

我有一个可变数组不是如图所示的静态数组。在我的应用程序中有一个视图控制器,如果用户按下按钮,其中有一个名为“添加收藏夹”的按钮,文件应保存在 Documents 文件夹中,否则不保存。我无法提前知道什么会拯救用户,所以我创建了一个可变数组。这些文件必须永久保留在 Documents 文件夹中。我该怎么办? 参考链接示例显示静态数据。但你可以拥有动态数据

以上是关于在 Documents 文件夹中写入文件列表并保存在内存中的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Documents 文件夹中保存 UIImagePicker 中的 UIImage 并获取路径字符串以保存在 Swift 中的 Core Data 中

WPF:在 Documents 文件夹中保存和读取 Json 文件

在macOS上写入Node.js中的〜/ Documents文件夹?

如何将字典列表保存到文件中?

IOS中获取各种文件的目录路径的方法

Swift:从 MainBundle 读取 plist 并直接写入 Documents 失败