今天遇到新生问一个问题,就是用自己定义了一个plist文件,然后可以往里面写东西,但是写过再次运行的时候里面的数据总是最后一次写入的数据。后来就专门研究了一下plist文件。

    大家都知道当你创建一个项目的时候,在Supporting Files中会有一个Info.plist文件,这个文件中存储的信息如下:

关于plist文件的那些事

 它是整个APP的配置文件,包括了版本信息以及APP桌面显示名称等信息。可能是我还不太了解,但是经过我测试发现我无法用代码对Info.plist这个文件进行操作。

    先把plist文件放在一边,先了解一下文件目录,这个我认为很必要。直接看下图:

关于plist文件的那些事

 关于plist文件的那些事

关于plist文件的那些事

 我已经在上面都标注了一下用到的文件夹以及文件的作用,相信大家应该对整个目录结构有一个整体的了解。现在继续谈谈plist文件。

    用例子说明:比如我要做一个通讯录,想用plist文件去存放每个人的基本信息,包括姓名和电话。想要实现的最终效果是:

关于plist文件的那些事

 那么我就可以这样做:

- (void)viewDidLoad {
    [super viewDidLoad];
    
    NSString *rootPath = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES).firstObject;
    NSString *path = [rootPath stringByAppendingPathComponent:@"user.plist"];
    
    NSMutableArray *totalArr = [[NSMutableArray alloc] initWithContentsOfFile:path];
    if(!totalArr)
    {
        totalArr = [NSMutableArray new];
    }
    NSMutableDictionary  *dic = [NSMutableDictionary new];
    [dic setObject:@“183434534535" forKey:@"telephone"];
    [dic setObject:@“王五" forKey:@“name"];
    [totalArr addObject:dic];
    [totalArr writeToFile:path atomically:YES];   
} 

 

第一步:我先获得刚才所说的那个存放我们自己创建的文件的目录Documents。

NSString *rootPath = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES).firstObject;

 

 

第二步:相当于字符串拼接,获取那个user.plist的绝对路径。

 NSString *path = [rootPath stringByAppendingPathComponent:@"user.plist"];

 

第三步:我新建一个NSMutableArr,里面的数据来自于path所指向的文件,即plist文件。这样的话文件中的数据就可以写到totalArr中了

 NSMutableArray *totalArr = [[NSMutableArray alloc] initWithContentsOfFile:path];

    if(!totalArr)

    {

        totalArr = [NSMutableArray new];

    }

 

注意,这里可能user.plist文件不存在,所以如果这个文件不存在,那么totalArr是没有创建成功的,所以加一个判断,如果totalArr没有创建成功(因为path下没有这个文件),就新建一个。

第四步:新建一个字典,然后把字典放到totalArr中。

 NSMutableDictionary  *dic = [NSMutableDictionary new];

    [dic setObject:@“183434534535" forKey:@"telephone"];

    [dic setObject:@“王五" forKey:@“name"];

    [totalArr addObject:dic];    //这里我把新建的dic加入原来的数组中,这样就会把原来的数据也一并写入到plist文件中.
View Code

相关文章:

  • 2021-12-13
  • 2021-11-03
  • 2021-05-17
  • 2022-02-04
  • 2021-10-27
  • 2021-12-08
  • 2022-01-05
  • 2022-01-16
猜你喜欢
  • 2021-09-17
  • 2021-12-07
  • 2021-08-09
  • 2021-08-15
  • 2021-08-13
  • 2021-12-03
  • 2022-01-14
相关资源
相似解决方案