文件1
//
// XJDraftArchiver.h
// tech2real
//
// Created by Johnay on 17/12/25.
// Copyright © 2017年 SZUI. All rights reserved.
//
#import <Foundation/Foundation.h>
@interface XJDraftArchiver : NSObject
/**
* 单例
*
* @return 返回单例对象
*/
+ (instancetype)sharedClient;
/**
* 对数据进行归档
*
* @param dataArray 需要进行归档的数据
*/
-(void)setArchiverDataWithData:(NSMutableArray *)dataArray;
/**
* 获取解归档的数据
*
* @return 解归档后的数组
*/
-(NSMutableArray*)getArchiverData;
/**
* 获取文件路径
*
* @return 返回文件路径
*/
-(NSString *)getAllFilePath;
@end
//
// XJDraftArchiver.m
// tech2real
//
// Created by Johnay on 17/12/25.
// Copyright © 2017年 SZUI. All rights reserved.
//
#import "XJDraftArchiver.h"
/**
* 文件后缀名
*/
NSString *const kFileDefaultPathExtension = @"cache";
/**
* 默认文件名
*/
NSString *kFileDefaultFileName = @"defaultFile";
@interface XJDraftArchiver ()
@end
@implementation XJDraftArchiver
/**
* 单例
*
* @return 返回单例对象
*/
+ (instancetype)sharedClient
{
static XJDraftArchiver *client = nil;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
client = [[XJDraftArchiver alloc]init];
});
// kFileDefaultFileName = [[NSUserDefaults standardUserDefaults]valueForKey:isLoginStatus]?[[NSUserDefaults standardUserDefaults]valueForKey:PHONE]:@"defaultFile";
return client;
}
/**
* 对数据进行归档
*
* @param dataArray 需要进行归档的数据
*/
-(void)setArchiverDataWithData:(NSMutableArray *)dataArray
{
NSString *fileAllPath = [self getAllFilePath];
if([[NSFileManager defaultManager] fileExistsAtPath:fileAllPath]) {//先将该地址存在的文件删除,再存储。
NSError *error = nil;
if(![[NSFileManager defaultManager] removeItemAtPath:fileAllPath error:&error]) {
NSLog(@"Cannot remove file: %@", error);
}
}
[NSKeyedArchiver archiveRootObject:dataArray toFile:fileAllPath];
}
/**
* 获取解归档的数据
*
* @return 解归档后的数组
*/
-(NSMutableArray*)getArchiverData
{
NSString *fileAllPath = [self getAllFilePath];
NSMutableArray *newDataArray = [NSKeyedUnarchiver unarchiveObjectWithFile:fileAllPath];
return newDataArray;
}
/**
* 获取文件路径
*
* @return 返回文件路径
*/
-(NSString *)getAllFilePath
{
NSString *paths = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) firstObject];
NSString *fileAllPath = [[paths stringByAppendingPathComponent:kFileDefaultFileName] stringByAppendingPathExtension:kFileDefaultPathExtension];
return fileAllPath;
}
@end
文件2
//
// XJDraftModel.h
// tech2real
//
// Created by Johnay on 17/12/22.
// Copyright © 2017年 SZUI. All rights reserved.
//
#import "HPBaseModel.h"
#import "TZAssetModel.h"
@interface XJDraftModel : HPBaseModel<NSCoding>
@property (nonatomic, copy) NSString *titleText;
@property (nonatomic, copy) NSString *createTime;
@property (nonatomic, copy) NSString *contentText;
//@property (nonatomic,strong)NSMutableArray *picArrs;
//@property (nonatomic, strong)NSMutableArray<TZAssetModel *> *selectedAssets;
@property (nonatomic, strong)NSMutableArray *selectedPhotos;
@property (nonatomic, copy) NSString *shareFlag;
@property (nonatomic, copy) NSString *logoUrl;
@property (nonatomic, copy) NSString *shareTitle;
@property (nonatomic, copy) NSString *shareType;
@property (nonatomic, copy) NSString *shareContent;
@property (nonatomic, copy) NSString *clubImgName;
@property (nonatomic, copy) NSString *clubName;
@property (nonatomic, copy) NSString *clubID;
@end
//
// XJDraftModel.m
// tech2real
//
// Created by Johnay on 17/12/22.
// Copyright © 2017年 SZUI. All rights reserved.
//
#import "XJDraftModel.h"
#import <objc/runtime.h>
@implementation XJDraftModel
- (void)setValue:(id)value forUndefinedKey:(NSString *)key {
}
#pragma mark - 归档
-(void)encodeWithCoder:(NSCoder *)aCoder
{
unsigned int outCount = 0;
Ivar *ivars = class_copyIvarList([self class], &outCount);
for (unsigned int i = 0; i<outCount; i++) {
Ivar ivar = ivars[i];
NSString *key = [NSString stringWithUTF8String:ivar_getName(ivar)];
id value = [self valueForKey:key];
[aCoder encodeObject:value forKey:key];
}
free(ivars);
}
#pragma mark - 解归档
-(instancetype)initWithCoder:(NSCoder *)aDecoder
{
self = [super init];
if (self) {
unsigned int OutCount = 0;
Ivar *ivars = class_copyIvarList([self class], &OutCount);
for (unsigned int i=0; i<OutCount; i++) {
Ivar ivar = ivars[i];
NSString *key = [NSString stringWithUTF8String:ivar_getName(ivar)];
[self setValue:[aDecoder decodeObjectForKey:key] forKey:key];
}
free(ivars);
}
return self;
}
@end
网友评论