zoukankan      html  css  js  c++  java
  • 一、利用NSUserDefaults进行对短小数据的存和取(自定义对象的存取)。

    NSString * string = [NSString stringWithFormat:@"JiangR"]; 

    NSUserDefaults * userDefaults = [NSUserDefaults standardUserDefaults]; 

     [userDefaults setObject:string forKey:@"string"];//存放。

     [userDefaults synchronize];//同步文件,否则程序非正常退出的时候信息将不被保存

     NSLog(@"string:%@",[userDefaults objectForKey:@"string"]);//读取的结果。string:JiangR 

     

    备注:

    NSUserDefaults 

    只能对如下几类数据进行存取(NSString、NSNumber、NSDate、NSArray、NSDictionary).

    如果把一个自定义的类存到一个NSArray里,然后再存到NSUserDefaults里也是不能成功的.

    可以让这个自定义类实现协议中的

    - (id) initWithCoder: (NSCoder *)coder方法和- (void) encodeWithCoder: (NSCoder *)coder方法,然后把该自定义的类对象编码到

    NSData中,再从NSUserDefaults中进行读取,

    举例如下:

    #import 

    @interface MySubView :  

    NSObject<NSCoding> 

      NSString * _title; 

       NSString * _content; 

    @property(nonatomic,retain)NSString * title; 

    @property (nonatomic,retain)NSString * content; 

    @end 

     #import "" 

    //若要对类对象进行enCode/deCode.就必须先对类对象的成员变量进行enCode/deCode 

    //对类实例的成员变量进行解码

     - (id)initWithCoder:(NSCoder *)aDecoder 

    {   

      if(self = [super init]){ 

        self.title = [aDecoder decodeObjectForKey:@"title"]; 

        self.content = [aDecoder decodeObjectForKey:@"content"]; 

      } 

      return self; 

     //对类实例的成员变量进行编码

     - (void)encodeWithCoder:(NSCoder *)aCoder 

    {   

      [aCoder encodeObject:_title forKey:@"title"]; 

        [aCoder encodeObject:_content forKey:@"content"]; 

    @end 

     

    以上是自定义一个类

    MySubView继承NSOject. 

    在另一个文件中:

    MySubView * subView = [[MySubView alloc] init]; 

     [subView setContent:@"什么叫做。。。。?"]; 

     [subView setTitle:@"什么叫做title??"]; 

    NSUserDefaults * userDefaults = [NSUserDefaults standardUserDefaults]; 

     NSData * data = [NSKeyedArchiver archivedDataWithRootObject:subView];//将id类型转换成可存放在NSUserDefaults中的NSDate类型。

     [userDefaults setObject:data forKey:@"subView"]; 

     [userDefaults synchronize]; 

    NSData * data_ = [[NSUserDefaults standardUserDefaults] objectForKey:@"subView"];//从NSUserDefaults中读取数据。

     MySubView * string = [NSKeyedUnarchiver unarchiveObjectWithData:data_];//将读取的数据反向转换成之前的类型。

    NSLog(@":%@ --- :%@",string.title,string.content); 

    //打印结果::什么叫做title?? --- :什么叫做。。。。?

     

     

     

  • 相关阅读:
    Context都没弄明白,还怎么做Android开发?
    Android中Drawable分类汇总
    查找首个非重复字符
    七个对我最好的职业建议(译文)
    Android:最全面的 Webview 详解
    Android开发之微信底部菜单栏实现的几种方法汇总
    android 底部菜单栏实现(转)
    Android实现顶部底部双导航界面功能
    Android BottomNavigationBar底部导航控制器的使用
    Android底部导航栏的四种实现
  • 原文地址:https://www.cnblogs.com/huangh/p/4059085.html
Copyright © 2011-2022 走看看