• iOS 归档宏


    1.归档的宏

    #define OBJC_STRINGIFY(x) @#x

    #define encodeObject(x) [aCoder encodeObject:x forKey:OBJC_STRINGIFY(x)]

    #define decodeObject(x) x = [aDecoder decodeObjectForKey:OBJC_STRINGIFY(x)]

     #define encodeBool(x) [aCoder encodeBool:x forKey:OBJC_STRINGIFY(x)]

    #define decodeBool(x) x = [aDecoder decodeBoolForKey:OBJC_STRINGIFY(x)]

     #define encodeInt(x) [aCoder encodeInt:x forKey:OBJC_STRINGIFY(x)]

    #define decodeInt(x) x = [aDecoder decodeIntForKey:OBJC_STRINGIFY(x)]

     #define encodeInteger(x) [aCoder encodeInteger:x forKey:OBJC_STRINGIFY(x)]

    #define decodeInteger(x) x = [aDecoder decodeIntegerForKey:OBJC_STRINGIFY(x)]

     #define encodeFloat(x) [aCoder encodeFloat:x forKey:OBJC_STRINGIFY(x)]

    #define decodeFloat(x) x = [aDecoder decodeFloatForKey:OBJC_STRINGIFY(x)]

    #define encodeDouble(x) [aCoder encodeDouble:x forKey:OBJC_STRINGIFY(x)]

    #define decodeDouble(x) x = [aDecoder decodeDoubleForKey:OBJC_STRINGIFY(x)]

    2.归档的数据类型可以是 int float double integer bool object 和字符串 (字符串 数组 归档都是按对象处理) 

    3.如果模型中存在这些属性 

    @property (nonatomic,assign) NSInteger filmID;

    @property (nonatomic,copy) NSString* race;

    4.来到.m文件来实现此方法

    - (id)initWithCoder:(NSCoder *)aDecoder

    {

        self = [super init];

        if (self)

        {

            decodeInt(_filmID);

            decodeObject(_race);

        }

        return self;

    }

    - (void)encodeWithCoder:(NSCoder *)aCoder

    {

        encodeInt(_filmID);

        encodeObject(_race);

    }

    5.最好还是有个工具类(ToolsData),直接调用次方法就能取到值 ,在这个工具类中,写两个类方法 

    + (NSDictionary*)medalsDetail;

    + (void)storeMedalDetailData:(NSDictionary*)medals;

    6.再次工具类中实现这两个方法

    + (NSDictionary*)medalsDetail

    {

        NSData* data = [[NSUserDefaults standardUserDefaults] objectForKey:@"medals_Detail"];

        if (data) {

            return [NSKeyedUnarchiver unarchiveObjectWithData:data];

        }

        return nil;

    }

     + (void)storeMedalDetailData:(NSDictionary*)medals

    {

        NSData* medalsData = [NSKeyedArchiver archivedDataWithRootObject:medals];

        if (medalsData)

        {

            [[NSUserDefaults standardUserDefaults] setObject:medalsData forKey:@"medals_Detail"];

            [[NSUserDefaults standardUserDefaults] synchronize];

        }

    }

    综上所述就实现归档

    1
  • 相关阅读:
    动态添加删除控件
    文件下载源码
    poj 1300 欧拉回路、通路 解题报告
    hdu 1232 并查集 或者 深搜
    hdu 2546 01背包问题
    强连通图的判断 hdu 1269
    hdu 2159 二维费用背包问题
    Hdu 3336 kmp+dp解题报告
    hdu 3639 强连通练习使用
    hdu 1712 分组背包问题
  • 原文地址:https://www.cnblogs.com/fantasy3588/p/5312089.html
Copyright © 2020-2023  润新知