zoukankan      html  css  js  c++  java
  • iOS 使用NSUserdefault 保存自定义的 对象

    一:NSUserDefaults支持的数据格式有:NSNumber(Integer、Float、Double),NSString,NSData,NSArray,NSDictionary,BOOL类型;

    二:可以把自定义的对象,转换为NSData来达到存储对象到NSUserDefaults的目的;

    如代码:

      1:model.h

       

    #import <Foundation/Foundation.h>
    
    @interface ReplayModel : NSObject
    
    @property (nonatomic,strong)NSNumber *useTimes;       //使用次数
    @property (nonatomic,strong)NSDate *addDate;    //添加日期
    @property (nonatomic,strong)NSString *replayContent;    //回复的模板内容;
    
    @end
    View Code

     2: model.m

      

    #import "ReplayModel.h"
    
    @implementation ReplayModel
    
    
    - (void)encodeWithCoder:(NSCoder *)encoder {
        //Encode properties, other class variables, etc
        [encoder encodeObject:self.useTimes forKey:@"useTimes"];
        [encoder encodeObject:self.addDate forKey:@"addDate"];
        [encoder encodeObject:self.replayContent forKey:@"replayContent"];
    }
    
    - (id)initWithCoder:(NSCoder *)decoder {
        if((self = [super init])) {
            //decode properties, other class vars
            self.useTimes = [decoder decodeObjectForKey:@"useTimes"];
            self.addDate = [decoder decodeObjectForKey:@"addDate"];
            self.replayContent = [decoder decodeObjectForKey:@"replayContent"];
        }
        return self;
    }
    
    @end
    View Code

    3: 使用,写入

            ReplayModel *model = [pinCiDataArray objectAtIndex:theReplayIndex];
            NSLog(@"%@ 次数 %d",model.replayContent,[model.useTimes intValue]);
            model.useTimes = [NSNumber numberWithInt:[model.useTimes intValue]+1];
            NSLog(@"新次数 %d",[model.useTimes intValue]);
            
            [pinCiDataArray replaceObjectAtIndex:theReplayIndex withObject:model];
            NSData *encodeData = [NSKeyedArchiver archivedDataWithRootObject:pinCiDataArray];
            [[NSUserDefaults standardUserDefaults] setObject:encodeData forKey:kPiCiArrayData];
    View Code

    4:使用,读取

        NSData *encodeObject = [[NSUserDefaults standardUserDefaults] objectForKey:kTimeArrayData];
        NSMutableArray *tempTimeData = [NSKeyedUnarchiver unarchiveObjectWithData:encodeObject];
    View Code

    参考:http://stackoverflow.com/questions/2315948/how-to-store-custom-objects-in-nsuserdefaults

  • 相关阅读:
    P2704 [NOI2001]炮兵阵地[状压dp]
    【CRT】中国剩余定理简介
    乘法逆元
    P2921 [USACO08DEC]在农场万圣节[SCC缩点]
    P1967 货车运输[生成树+LCA]
    P2746 P2812 [USACO5.3]校园网Network of Schools[SCC缩点]
    Debian初始化配置
    Linux网桥配置
    Jenkins与Gitlab集成
    Gitlab搭建
  • 原文地址:https://www.cnblogs.com/cocoajin/p/3508228.html
Copyright © 2011-2022 走看看