zoukankan      html  css  js  c++  java
  • iOS关于NSUserDefaults存,写, 删的问题

     

    我们知道NSUserDefaults可以保存某些信息在本地,例如登录的账号,密码等等,当我们使用NSUserDefaults时,它是将信息写入到本地的一个plist文件里,我们都知道 删除plist里的某一项内容直接用[[NSUserDefaults standardUserDefaults] removeObjectForKey:key];这样就可以直接删除 plist中的某一个特定的项的内容了,

    但是,如果要把整个plist文件删除,那应该怎么样呢???
     
    其实也不难,我们要知道删除整个plist文件实际上就是把plist文件中的所有item删除就行了,也就是说,如果plist文件里只有一项内容,
    NSUserDefaults *userDefatluts = [NSUserDefaults standardUserDefaults];
    [userDefaults setObject:"张三" forKey:@"name"];
    [userDefaults synchronize];   //这行代码一定要加,虽然有时候不加这一行代码也能保存成功,但是如果程序运行占用比较大的内存的时候不加这行代码,可能会造成无法写入plist文件中,我试验过,真的是这样的
    这样,我们就往plist文件中写入了一个name的item。
     
    接下来,我们这么写:
    NSUserDefaults *userDefatluts = [NSUserDefaults standardUserDefaults];
    [userDefaults removeObjectForKey:@"name"];
    [userDefaults synchronize];
     
    这样你会发现,plist文件消失了,但是如果我们写入的内容不仅仅是一项那要怎么删除所有的呢?
    其实原理和只有一个item时候是一样的,我们删掉plist文件也就是相当于把plist文件里的所有item依次删除,对,就这么简单。
     
    下面看一下代码:
    我们先要取到plist文件里的所有的Key 否则 是不能用 removeObjectForKey:key 这个方法来删除的,那么怎样获得plist文件中素有item的key呢,dictionary 有一个方法 [dictionary allKeys];返回值是一个数组,这样我们能拿到dictionary中所有的 key,
    我们知道我们写入的plist文件中的项目是以一个字典的形式保存的,所以,
    代码如下:
    NSUserDefaults *userDefatluts = [NSUserDefaults standardUserDefaults];
    NSDictionary *dictionary = [userDefaults dictionaryRepresentation];
    for(NSString* key in [dictionary allKeys]){
        [userDefaults removeObjectForKey:key];
        [userDefaults synchronize];
    }
    这样自己通过 NSUserDefaults 写入到本地的plist文件就能 把整个文件删除了。
     
     
     
  • 相关阅读:
    JavaSE 基础 第51节 定义自己的异常
    JavaSE 基础 第50节 Java中的异常链
    JavaSE 基础 第49节 手动抛出异常
    JavaSE 基础 第48节 Java中的异常声明
    JavaSE 基础 第47节 获取异常信息
    JavaSE 基础 第46节 异常的分类
    JavaSE 基础 第45节Java异常快速入门
    JavaSE 基础 第44节 引用外部类的对象
    JavaSE 基础 第43节 静态内部类
    通用爬虫
  • 原文地址:https://www.cnblogs.com/FZP5/p/5311376.html
Copyright © 2011-2022 走看看