利用NSKeyedUnarchiver对象归档方式保存数据

来源:互联网 发布:sql select语句 包含 编辑:程序博客网 时间:2024/06/03 20:25
//
//  ZSXCUserManager.h
//  zsxc
//
//  Created by hyjt on 2017/8/1.
//  Copyright © 2017haoyungroup. All rights reserved.
//

#import<Foundation/Foundation.h>
@interfaceZSXCUserData :NSObject
@property(nonatomic,copyNSString *userId;
@property(nonatomic,copyNSString *devId;
@property(nonatomic,copyNSString *orgId;
@property(nonatomic,copyNSString *password;
@end

@interfaceZSXCUserManager :NSObject
+ (instancetype)sharedManager;
@property(nonatomic,strong)   ZSXCUserData  *currentUserData;
@end
//
//  ZSXCUserManager.m
//  zsxc
//
//  Created by hyjt on 2017/8/1.
//  Copyright © 2017haoyungroup. All rights reserved.
//

#import"ZSXCUserManager.h"
#define ZSXCUserId      @"userId"
#define ZSXCPassword    @"password"
#define ZSXCOrgId       @"orgId"
#define ZSXCDevId       @"devId"
@interfaceZSXCUserData ()<NSCoding>

@end

@implementationZSXCUserData

- (instancetype)initWithCoder:(NSCoder*)aDecoder
{
   if (self= [superinit]) {
       _userId  = [aDecoderdecodeObjectForKey:ZSXCUserId];
       _password = [aDecoder decodeObjectForKey:ZSXCPassword];
       _orgId    = [aDecoderdecodeObjectForKey:ZSXCOrgId];
       _devId    = [aDecoderdecodeObjectForKey:ZSXCDevId];
    }
   return self;
}

- (void)encodeWithCoder:(NSCoder*)encoder
{
   if ([_userIdlength]) {
        [encoderencodeObject:_userIdforKey:ZSXCUserId];
    }
   if ([_passwordlength]) {
        [encoderencodeObject:_passwordforKey:ZSXCPassword];
    }
   if ([_orgIdlength]) {
        [encoderencodeObject:_orgIdforKey:ZSXCOrgId];
    }
   if ([_devIdlength]) {
        [encoderencodeObject:_devIdforKey:ZSXCDevId];
    }
}
@end
@interfaceZSXCUserManager ()
@property(nonatomic,copyNSString    *filepath;
@end
@implementationZSXCUserManager
+ (instancetype)sharedManager
{
   static ZSXCUserManager *instance = nil;
   static dispatch_once_t onceToken;
   dispatch_once(&onceToken, ^{
       NSString *file = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES).firstObjectstringByAppendingPathComponent:@"ZSXCUSER.data"];
        instance = [[ZSXCUserManageralloc]initWithPath:file];
    });
   return instance;
}
- (instancetype)initWithPath:(NSString*)filepath
{
   if (self= [superinit])
    {
       _filepath = filepath;
        [selfreadData];
    }
   return self;
}
-(void)setCurrentUserData:(ZSXCUserData*)currentUserData{
   _currentUserData = currentUserData;
    [selfsaveData];
   
}
//从文件中读取和保存用户名密码
- (void)readData
{
   NSString *filepath = [selffilepath];
   if ([[NSFileManagerdefaultManager]fileExistsAtPath:filepath])
    {
       id object = [NSKeyedUnarchiverunarchiveObjectWithFile:filepath];
       _currentUserData = [object isKindOfClass:[ZSXCUserDataclass]] ? object :nil;
    }
}
//保存数据
- (void)saveData
{
   NSData *data = [NSDatadata];
   if (_currentUserData)
    {
        data = [NSKeyedArchiverarchivedDataWithRootObject:_currentUserData];
    }
    [datawriteToFile:[selffilepath]atomically:YES];
   DLog(@"%@",[selffilepath]);
}
@end
阅读全文
0 0
原创粉丝点击