#import <Foundation/Foundation.h>NS_ASSUME_NONNULL_BEGIN
@interface UserInfo : NSObject
@property (nonatomic,copy)NSString *userid;//用户id
@property (nonatomic,copy)NSString *avatar;//头像
@property (nonatomic,copy)NSString *mobile;//手机号
@property (nonatomic,copy)NSString *userName;//用户名
@property (nonatomic,copy)NSString *nickname;//用户昵称
@property (nonatomic,copy)NSString *birthday;//生日
@property (nonatomic,copy)NSString *token;//token
@property (nonatomic,copy)NSString *sex;//性别- (instancetype)initWithDictionary:(NSDictionary *)dictionary;
@end@interface UserManager : NSObject/**存储用户信息@param dic 服务器获取来的用户信息字典@return <#return value description#>*/
+ (BOOL)saveUserInfo:(NSDictionary *)dic;/**取用户信息@return 返回用户信息模型*/
+ (UserInfo *)userInfo;/**清空用户信息@return <#return value description#>*/
+ (BOOL)clearUserInfo;@end
NS_ASSUME_NONNULL_END
#import "UserManager.h"@implementation UserInfo- (instancetype)initWithDictionary:(NSDictionary *)dictionary
{if ([dictionary isKindOfClass:[NSDictionary class]]){if (self = [super init]){[self setValuesForKeysWithDictionary:dictionary];}}return self;
}- (void)setValue:(id)value forKey:(NSString *)key
{if ([value isKindOfClass:[NSNull class]]){return;}[super setValue:value forKey:key];
}#pragma mark ————————— 对未定义key的处理方法 —————————————
- (void)setValue:(id)value forUndefinedKey:(NSString *)key
{// id 变量名现在可以直接使用,比如你要将服务器的 id 转成 useridif([key isEqualToString:@"id"]){
//          self.userid = value;
//          return;}}@end@implementation UserManager+ (BOOL)saveUserInfo:(NSDictionary *)dic
{return [NSKeyedArchiver archiveRootObject:dic toFile:[self path]];
}+ (UserInfo *)userInfo
{id  data = [NSKeyedUnarchiver unarchiveObjectWithFile:[self path]];UserInfo *model = [[UserInfo alloc]initWithDictionary:data];return model;
}+ (BOOL)clearUserInfo
{NSFileManager *defaultManager = [NSFileManager defaultManager];if ([defaultManager isDeletableFileAtPath:[self path]]){//删除归档文件return [defaultManager removeItemAtPath:[self path] error:nil];}else{return NO;}
}/**Documents/ 保存应用程序的重要数据文件和用户数据文件等。用户数据基本上都放在这个位置(例如从网上下载的图片或音乐文件),该文件夹在应用程序更新时会自动备份,在连接iTunes时也可以自动同步备份其中的数据。Library:这个目录下有两个子目录,可创建子文件夹。可以用来放置您希望被备份但不希望被用户看到的数据。该路径下的文件夹,除Caches以外,都会被iTunes备份.Library/Caches: 保存应用程序使用时产生的支持文件和缓存文件(保存应用程序再次启动过程中需要的信息),还有日志文件最好也放在这个目录。iTunes 同步时不会备份该目录并且可能被其他工具清理掉其中的数据。Library/Preferences: 保存应用程序的偏好设置文件。NSUserDefaults类创建的数据和plist文件都放在这里。会被iTunes备份。@return <#return value description#>*/
+(NSString *)path
{// 获取沙盒根目录路径NSString *homeDir   = NSHomeDirectory();// 获取Documents目录路径NSString *docDir    = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES) firstObject];//获取Library的目录路径NSString *libDir    = [NSSearchPathForDirectoriesInDomains(NSLibraryDirectory,NSUserDomainMask,YES) lastObject];// 获取cache目录路径NSString *cachesDir = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory,NSUserDomainMask,YES) firstObject];// 获取tmp目录路径NSString *tmpDir = NSTemporaryDirectory();// 获取应用程序程序包中资源文件路径的方法:NSString *bundle = [[NSBundle mainBundle] bundlePath];NSString *name = @"userinfo";NSString *type = @"sql";NSString *allName = [NSString stringWithFormat:@"%@.%@",name,type];return [tmpDir stringByAppendingPathComponent:allName];;
}@end
#import "UserManager.h"
// 调用
[UserManager saveUserInfo:@{@"nickname":@"小张飞"}];UserInfo *model =  [UserManager userInfo];NSLog(@"%@", model.nickname);

iOS 用户信息存储的工具类相关推荐

  1. 微信小程序php java_PHP实现微信小程序用户授权的工具类

    事先准备工作 1.申请一个小程序,申请地址:传送门 2.仔细阅读小程序的用户授权登陆官方文档:<用户授权登陆的流程> 3.仔细阅读微信用户数据解密的相关文档:<用户数据解密说明文档& ...

  2. 微信小程序php java_PHP实现微信小程序用户授权的工具类示例

    事先准备工作 1.申请一个小程序,申请地址:传送门 2.仔细阅读小程序的用户授权登陆官方文档: <用户授权登陆的流程> 3.仔细阅读微信用户数据解密的相关文档: <用户数据解密说明文 ...

  3. php对接小程序获取表单,PHP实现微信小程序用户授权的工具类

    事先准备工作 1.申请一个小程序,申请地址:传送门 2.仔细阅读小程序的用户授权登陆官方文档:<用户授权登陆的流程> 3.仔细阅读微信用户数据解密的相关文档:<用户数据解密说明文档& ...

  4. ios第三方库和工具类

    下面的是使用苹果电脑后,自己的一下积累吧.有好用的第三方库和工具,肯定会第一时间和大家分享的. 自己平时写的一些分类和工具库 SSTools 已经在github上面开始更新了,欢迎大家来指正和补充 一 ...

  5. Java —— 获取用户真实IP工具类

    public class NetworkUtil {private static final Logger logger = LoggerFactory.getLogger(NetworkUtil.c ...

  6. 小论工具类App的盈利之道

    从Android平台兴起算起,偶在移动互联网这个行业中一直摸爬滚打到现在,一直都是以一个App开发者的身份去接触这个行业,刚开始以学生身份做一些小应用自娱自乐,后来也加入过创业团队弄过潮,从刚开始做一 ...

  7. 工具类APP的生存之道

    工具类应用虽具有用户价值,但在商业化道路上被远远的甩在后面,对于这些起步并不算晚的工具App来说,时至2013年仍然存在的它们显然可能面临着相同的困境--比如盈利时间尚不可测:却也会迎来不同的机遇-- ...

  8. 从记账软件看工具类APP的存量运营之道

    随着移动互联网的发展,APP的种类越来越多,一些工具类 APP 增长乏力,难以实现长期增长.只有提高用户留存时间,实现流量变现,才能在激烈的市场竞争中持续发展. 工具类APP的特点: 1) 替代性很强 ...

  9. JAVA加密工具类实例

    工具类还是老套路,要让用户可扩展,同时提供一个基础工具即可,本文分享BeginCode的用户密码加密工具类的使用, 如果不为了扩展性,可以写成工具类即可,提供两个静态方法如下 一个方法是直接MD5加密 ...

  10. 工具类在线教育走向何处

    在2020年年尾,在线教育行业的几则新闻令人唏嘘不已. 猿辅导12月24日获得云锋基金3亿美元战略融资,今年融资总额超过35亿美元:12月28日,作业帮完成了超16亿美元的E+轮融资,投资方包括阿里巴 ...

最新文章

  1. LINUNX下PHP下载中文文件名代码
  2. 通过代码自定义cell(cell的高度不一致)
  3. SmartArt使用
  4. 微型计算机控制理论基础答案,微型计算机控制技术试卷c
  5. 统计学第一章--最小二乘拟合正弦函数,正则化
  6. 麻省理工学生令计算机系统升级不需重启
  7. AlexNet卷积神经网络
  8. 推荐系统-Task02数据库基本使用
  9. acid事务 mysql_MySQL 事务ACID特性
  10. 毕业设计 基于java的贴吧论坛_java毕业设计_springboot框架的论坛贴吧
  11. ofd 文件发票解析
  12. 基于改进自动色彩均衡算法的图像增强方法(含程序)
  13. 软件分享:Everthing
  14. uniny 物体运动到一个点停止_unity控制运动
  15. windows os x linux比较,windows、Linux与OS X相比,哪个系统更适合写代码?
  16. 杰理之IIC sclk时钟【篇】
  17. 性能优化之Apk瘦身
  18. 【欧几里得扩展欧几里得】
  19. 大智慧、飞狐、分析家、通达信、钱龙、麒麟公式编辑教程大全
  20. 这家国产芯片的崛起,叫板美日韩芯片企业

热门文章

  1. 新建SpringCloud电商后台项目
  2. vue3使用keep-alive页面切换时报错:TypeError: parentComponent.ctx.deactivate is not a function
  3. 关于注意力的自上而下和自下而上(top-down attention and bottom-up attention)
  4. ibeacon的实现,广播数据解析
  5. 小程序苹果手机底部出现横杠处理
  6. Resolution-robust Large Mask Inpainting with Fourier Convolutions 解读
  7. 数据挖掘—Autistic Spectrum Disorder Screening Data For Children
  8. 34套Java项目教程+源码包含Java swing项目 Java web项目 Java控制台项目(视频教程+源码)
  9. 微博商城开启社会化电商之路
  10. 支付宝(Alipay)支付,超详细使用教程讲解!