美文网首页iOS Developer
数据持久化之NSUserDefaults

数据持久化之NSUserDefaults

作者: 无意惹东风 | 来源:发表于2016-12-02 19:48 被阅读38次

    所谓的数据持久化、就是将内存中的数据模型转换为存储模型,以及将存储模型转换为内存中的数据模型的统称. 数据模型可以是任何数据结构或对象模型,存储模型可以是关系模型、XML、二进制流等。

    iOS中我们常用的数据持久化存储方式基本有五种:NSUserDefaults、plist文件、NSKeyedArchiver归档、SQLite 以及CoreData。其中对于少量的数据我们可以采用NSUserDefaults、plist文件、NSKeyedArchiver归档 这三种方法、而对于大量数据的存储可以使用SQLite 或者CoreData、当然也可使用FMDB。

    既然我们要存储一些内容、就需要知道怎么去存储、以及存好后又怎样去拿出来使用。今天来说一下关于NSUserDefaults的知识。

    NSUserDefaults又可称为属性设置、它是一个单例。
    它支持的数据类型有NSString、 NSNumber、NSDate、 NSArray、NSDictionary、BOOL、NSInteger、NSFloat等系统定义的数据类型,如果要存放自定义的对象(如自定义的类对象),则必须将其转换成NSData存储。

    对于NSUserDefaults、我们在存储数据时候使用set...forKey...的方法。

    NSUserDefaults *myDefaults = [NSUserDefaults standardUserDefaults];
    // 向NSUserDefaults中添加内容
    [myDefaults setObject:@"字符串、数组、字典等" forKey:@"数据类型"];
    [myDefaults setBool:YES forKey:@"Bool类型"];
    [myDefaults setInteger:100 forKey:@"number"];
    
    

    当然、这个时候我们还需对内容进行“synchronize”。如果没有调用synchronize方法,系统会根据I/O情况不定时刻地保存到文件中。所以如果需要立即写入文件的就必须调用synchronize方法。

    [myDefaults synchronize];
    

    当我们需要取出存储的内容时候就对应的用objectForKey、boolForKey、integerForKey等方法。

    // 获取存储的内容
    NSString *string = [myDefaults objectForKey:@"数据类型"];
    BOOL isBool = [myDefaults boolForKey:@"Bool类型"];
    NSInteger number = [myDefaults integerForKey:@"number"];
    

    对于删除数据、使用方法removeObjectForKey来操作。

    [myDefaults removeObjectForKey:@"Bool类型"];
    [myDefaults synchronize];
    

    综上所述、对于NSUserDefaults、我们需要掌握它的基本语法功能、存储和删除。另外、需要特别注意的就是一定不要忘记对他进行同步synchronize。

    相关文章

      网友评论

        本文标题:数据持久化之NSUserDefaults

        本文链接:https://www.haomeiwen.com/subject/wlyqmttx.html