UserInfo.m 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. #import "UserInfo.h"
  2. /**infoKeys是用来在userDefault里面存取数据的
  3. 要求:避免重复。
  4. */
  5. static NSArray *infoKeys;
  6. static UserInfo *userInfo = nil;
  7. void SaveObjectForKey(id object, NSString* key);
  8. @implementation UserInfo
  9. +(UserInfo *)shareInfo
  10. {
  11. static dispatch_once_t onceToken ;
  12. dispatch_once(&onceToken, ^{
  13. userInfo = [[UserInfo alloc] init] ;
  14. infoKeys = @[@"isWelcomed",@"adPaths",@"isLogin",@"userDict",@"userSch"];
  15. NSUserDefaults* ud = [NSUserDefaults standardUserDefaults];
  16. for (NSString *key in infoKeys)
  17. {
  18. /**读取空字典不会导致崩溃
  19. */
  20. id obj = [ud objectForKey:key];
  21. if ([key isEqualToString:@"isLogin"]) {
  22. if (!obj) {
  23. userInfo.isLogin = NO;
  24. }else{
  25. userInfo.isLogin = [obj intValue] == 1 ? YES : NO;
  26. }
  27. }else{
  28. [userInfo setValue:obj forKey:key];
  29. }
  30. }
  31. }) ;
  32. return userInfo ;
  33. }
  34. -(void)setIsWelcomed:(NSString *)isWelcomed
  35. {
  36. _isWelcomed = isWelcomed;
  37. SaveObjectForKey(isWelcomed, infoKeys[0]);
  38. }
  39. -(void)setAdPaths:(NSArray *)adPaths
  40. {
  41. _adPaths = adPaths;
  42. SaveObjectForKey(adPaths, infoKeys[1]);
  43. }
  44. -(void)setIsLogin:(BOOL)isLogin
  45. {
  46. _isLogin = isLogin;
  47. SaveObjectForKey([NSString stringWithFormat:@"%d",(int)isLogin], infoKeys[2]);
  48. }
  49. -(void)setUserDict:(NSDictionary *)userDict
  50. {
  51. _userDict = userDict;
  52. SaveObjectForKey(userDict, infoKeys[3]);
  53. }
  54. -(void)setUserSch:(NSDictionary *)userSch
  55. {
  56. _userSch = userSch;
  57. SaveObjectForKey(userSch, infoKeys[4]);
  58. }
  59. -(NSString*) sfzmhm
  60. {
  61. return _userDict[@"idcard"] ;
  62. }
  63. @end
  64. void SaveObjectForKey(id object, NSString* key)
  65. {
  66. NSUserDefaults *ud = [NSUserDefaults standardUserDefaults];
  67. if (!object) {
  68. if ([ud objectForKey:key]) {
  69. [ud removeObjectForKey:key];
  70. }
  71. }else{
  72. [ud setObject:object forKey:key];
  73. }
  74. [ud synchronize];
  75. }