豆瓣收藏的功能封装
来源:互联网 发布:mac怎么卸载qq 编辑:程序博客网 时间:2024/06/07 16:21
1.判断活动是否收藏过(使用时最号用一个属性保存返回值,方便之后操作)
// 判断活动是否收藏过+ (BOOL)isActivityInPlist:(Activity *)activity;
1.先将文件反归档 2.之后判断数组是否是空,如果是空返回NO 3.之后遍历数组,判断是否有元素,如果有返回YES,没有返回NO
+ (BOOL)isActivityInPlist:(Activity *)activity{ NSString *sandBoxPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, 1, YES) lastObject]; NSString *docPath = [sandBoxPath stringByAppendingPathComponent:@"activity.plist"]; // 反归档,判断是否收藏 NSArray *actArr = [NSKeyedUnarchiver unarchiveObjectWithFile:docPath]; if (actArr == nil) { return NO; } else { for (Activity *temp in actArr) { if ([temp.activityId isEqualToString:activity.activityId]) { return YES; } } return NO; }}
self.isSave = [SaveTool isActivityInPlist:self.activity]; // 根据收藏的状态改变button按钮 if (self.isSave) { [button setTitle:@"已收藏" forState:UIControlStateNormal]; } else { [button setTitle:@"收藏" forState:UIControlStateNormal]; } self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:button]; self.title = self.activity.title; NSLog(@"%@", self.activity.activityId);
2.归档:为了防止原来的数据被覆盖掉,所以一般先把数据进行反归档,把数据读出来之后,新数据加进去,在进行归档
两种情况:1.数组为空的时候,需要初始化数组 2.在读出来的数组中增加元素,归档
+ (void)saveActivityInPlist:(Activity *)activity{ // 为了防止原来的数据被覆盖掉,所以一般先把数据进行反归档,把数据读出来之后,新数据加进去,在进行归档 NSString *sandBoxPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, 1, YES) lastObject]; NSString *docPath = [sandBoxPath stringByAppendingPathComponent:@"activity.plist"]; NSMutableArray *arr = [NSKeyedUnarchiver unarchiveObjectWithFile:docPath]; // 有两种情况,第一种,数组为空,需要初始化一个数组 if (arr == nil) { arr = [NSMutableArray array]; } // 如果加了else,空数组就不会添加元素 [arr addObject:activity]; // 归档 [NSKeyedArchiver archiveRootObject:arr toFile:docPath];}
封装一个函数,实现收藏和取消收藏的功能(需要在函数中传一个状态,判断是收藏还是取消收藏的功能)
1.如果状态是NO,归档收藏 2.如果不是,取消收藏.需要遍历找到元素,然后删除,之后归档
+ (void)saveActivityOrCancel:(Activity *)activity state:(BOOL)state{ // 根据传过来的布尔判断当前的操作 if (state == NO) { // 归档收藏 [SaveTool saveActivityInPlist:activity]; } else { // 删除,取消收藏 // 删除 NSString *sandBoxPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, 1, YES) lastObject]; NSString *docPath = [sandBoxPath stringByAppendingPathComponent:@"activity.plist"]; // 反归档 NSMutableArray *arr = [NSKeyedUnarchiver unarchiveObjectWithFile:docPath]; // 不需要判断 // 遍历找到元素,不遍历找不到元素 for (Activity *temp in arr) { if ([temp.activityId isEqualToString:activity.activityId]) { [arr removeObject:temp]; break; } } [NSKeyedArchiver archiveRootObject:arr toFile:docPath]; }}
[SaveTool saveActivityOrCancel:self.activity state:self.isSave]; if (self.isSave) { [button setTitle:@"收藏" forState:UIControlStateNormal]; } else { [button setTitle:@"已收藏" forState:UIControlStateNormal]; } // 最后对状态进行取反 self.isSave = !self.isSave;
查找收藏详情(返回一个数组,不需要传参数)
+ (NSMutableArray *)searchAcitivityInPlist{ NSString *sandBoxPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, 1, YES) lastObject]; NSString *docPath = [sandBoxPath stringByAppendingPathComponent:@"activity.plist"]; NSMutableArray *arr = [NSKeyedUnarchiver unarchiveObjectWithFile:docPath]; return arr;}
因为需要刷新数据,对数据进行实时的更新,所以要把方法写在viewWillAppear里
// 重写这个方法,完成实时的更新数据- (void)viewWillAppear:(BOOL)animated{ [super viewWillAppear:animated]; // 这个要再这里写,cell是最后执行的函数 self.arr = [SaveTool searchAcitivityInPlist]; [self.tableView reloadData];}
0 0
- 豆瓣收藏的功能封装
- 豆瓣收藏的功能数据库
- android 基于豆瓣 Api 的客户端,包含电影分类,图书分类,电影榜单,收藏功能,搜索功能。
- 沙盒存储收藏的练习(豆瓣)
- UI19_豆瓣收藏
- 游戏的收藏功能
- WebBrowser2封装的容器收藏
- thinkphp的封装功能
- 功能代码的封装
- 豆瓣API用户图书收藏
- 收藏的一个js ajax封装类
- html工具类收藏,自己封装的
- 分享到人人 开心 豆瓣 的代码 (来自珂亦精品收藏)
- p2p打洞的功能封装
- Bullet的最小化功能封装
- js运动功能的封装
- 封装一个搜索的功能
- 收藏功能
- java正则匹配字符串中不包含一个或几个特定的字符串
- android 显示百度地图的静态图片
- AngularJS基础——样式指令、DOM操作指令及其它重要指令
- Android开源项目第一篇-----个性化控件UI篇
- 我的2015
- 豆瓣收藏的功能封装
- Mysterious Universe
- poj1275Cashier Employment【差分约束】
- tomcat下普通网址配置
- hadoop 运行mahout 问题小结(一)
- <LeetCode OJ> 172. Factorial Trailing Zeroes
- 全排列算法
- Android开源项目之二---工具库篇
- iOS经典讲解之常用的正则表达式方法