// // Created by apple on 2017/4/5. // Copyright © 2017年 Danson. All rights reserved. // #import "UserInfo.h" /**infoKeys是用来在userDefault里面存取数据的 */ static NSArray *infoKeys; static UserInfo *userInfo = nil; void SaveObjectForKey(id object, NSString *key); @implementation UserInfo +(UserInfo *)shareInfo { static dispatch_once_t onceToken ; dispatch_once(&onceToken, ^{ userInfo = [[UserInfo alloc] init] ; infoKeys = @[@"userDict",@"defaultHttp"]; NSUserDefaults *ud = [NSUserDefaults standardUserDefaults]; for (NSString *key in infoKeys) { //读取空字典不会导致崩溃 id obj = [ud objectForKey:key]; [userInfo setValue:obj forKey:key]; } }) ; return userInfo ; } -(void)setUserDict:(NSDictionary *)userDict { NSMutableDictionary *dic = [NSMutableDictionary dictionaryWithDictionary:userDict]; for (NSString *akey in dic.allKeys) { id obj = dic[akey]; if ([obj isEqual:[NSNull null]]) { [dic setValue:@"" forKey:akey]; } } _userDict = [NSMutableDictionary dictionaryWithDictionary:dic]; SaveObjectForKey(dic, infoKeys[0]); } -(void)setDefaultHttp:(NSString *)defaultHttp { _defaultHttp = defaultHttp; SaveObjectForKey(defaultHttp, infoKeys[1]); } @end void SaveObjectForKey(id object, NSString* key) { NSUserDefaults *ud = [NSUserDefaults standardUserDefaults]; if (!object || [object isEqual:[NSNull null]]) { if ([ud objectForKey:key]) { [ud removeObjectForKey:key]; } }else{ [ud setObject:object forKey:key]; } [ud synchronize]; }