#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 = @[@"isWelcomed",@"adPaths",@"isLogin",@"userDict",@"userSch"]; NSUserDefaults* ud = [NSUserDefaults standardUserDefaults]; for (NSString *key in infoKeys) { /**读取空字典不会导致崩溃 */ id obj = [ud objectForKey:key]; if ([key isEqualToString:@"isLogin"]) { if (!obj) { userInfo.isLogin = NO; }else{ userInfo.isLogin = [obj intValue] == 1 ? YES : NO; } }else{ [userInfo setValue:obj forKey:key]; } } }) ; return userInfo ; } -(void)setIsWelcomed:(NSString *)isWelcomed { _isWelcomed = isWelcomed; SaveObjectForKey(isWelcomed, infoKeys[0]); } -(void)setAdPaths:(NSArray *)adPaths { _adPaths = adPaths; SaveObjectForKey(adPaths, infoKeys[1]); } -(void)setIsLogin:(BOOL)isLogin { _isLogin = isLogin; SaveObjectForKey([NSString stringWithFormat:@"%d",(int)isLogin], infoKeys[2]); } -(void)setUserDict:(NSDictionary *)userDict { _userDict = userDict; SaveObjectForKey(userDict, infoKeys[3]); } -(void)setUserSch:(NSDictionary *)userSch { _userSch = userSch; SaveObjectForKey(userSch, infoKeys[4]); } -(NSString*) sfzmhm { return _userDict[@"idcard"] ; } @end void SaveObjectForKey(id object, NSString* key) { NSUserDefaults *ud = [NSUserDefaults standardUserDefaults]; if (!object) { if ([ud objectForKey:key]) { [ud removeObjectForKey:key]; } }else{ [ud setObject:object forKey:key]; } [ud synchronize]; }