iOS单例归档

#define LBBAccountPath(path) [[NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) lastObject] stringByAppendingPathComponent:path]
#define REDPOINT @"redPoint.archive"

@interface RedPointModel : JSONModel

/**
 *  单例类
 */
+ (RedPointModel *)shared;

+ (void)saveRedPoint:(RedPointModel *)redPoint;

@end



@implementation RedPointModel

+ (RedPointModel *)shared
{
    static RedPointModel *shared = nil;
    static dispatch_once_t oncePredicate;
    dispatch_once(&oncePredicate, ^{
        if ([NSKeyedUnarchiver unarchiveObjectWithFile:LBBAccountPath(REDPOINT)] != nil) {
            shared = [NSKeyedUnarchiver unarchiveObjectWithFile:LBBAccountPath(REDPOINT)];
        }else {
            shared = [[self alloc] init];
        }

    });
    return shared;
}

+ (void)saveRedPoint:(RedPointModel *)redPoint {
    
    [NSKeyedArchiver archiveRootObject:redPoint toFile:LBBAccountPath(REDPOINT)];

}

@end
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。