iOS学习笔记-APP共享数据之UIPasteboard使用
来源:互联网 发布:四大名助 综艺 知乎 编辑:程序博客网 时间:2024/06/05 04:33
APP之间共享数据的方式约以下几种:
1.URL Scheme
2.App Groups
3.KeyChain共享数据(keychain access group)
4.UIDocumentInteractionController
5.粘贴板UIPasteboard
这里我们详细讲解下UIPasteboard的使用:
注意:在iOS7中,使用 +[UIPasteboard pasteboardWithName:create:]和 +[UIPasteboard pasteboardWithUniqueName]创建剪贴板,只对相同的app group可见
创建方法:
UIPasteboard *pasteboard = [UIPasteboard pasteboardWithName:@"com.company.yourpasteboard" create:YES];pasteboard.persistent = YES; //是否持续存在_myPasteboard = pasteboard;
存值方法:
注意,这是单一存值的方法,即你存的type会覆盖上一次存入的type。这不同于字典
- (void)saveDic:(NSDictionary*)dic forKey:(NSString*)key{ NSData *dictData = [NSKeyedArchiver archivedDataWithRootObject:dic]; [_myPasteboard setData:dictData forPasteboardType:key];}- (void)saveStr:(NSString *)str forKey:(NSString *)key{ NSData *dictData = [NSKeyedArchiver archivedDataWithRootObject:str]; [_myPasteboard setData:dictData forPasteboardType:key];}- (void)saveData:(NSData *)data forKey:(NSString *)key{ [_myPasteboard setData:data forPasteboardType:key];}
还有个方法 setValue:forPasteboard: ,可以存普通的数据类型 : NSDictionary,NSArray,NSString…..
但我用着并不是很好用,还是setData吧
取值方法:
- (id)dataForKey:(NSString *)key{ return [NSKeyedUnarchiver unarchiveObjectWithData:[_myPasteboard dataForPasteboardType:key]];}
清空方法:
- (void)clear{// 1.直接删除剪切板// [UIPasteboard removePasteboardWithName:SHAREBOARD];// UIPasteboard *pasteboard = [UIPasteboard pasteboardWithName:SHAREBOARD create:YES];// _myPasteboard = pasteboard; //2.将剪切板数据置为0 可指定修改type NSArray *types = [_myPasteboard pasteboardTypes]; for (NSString *type in types) { if ([type isEqualToString:STATE]) { return; } NSData *dictData = [NSKeyedArchiver archivedDataWithRootObject:@0]; //这里clear的数据类型可以自己定义 [_myPasteboard setData:dictData forPasteboardType:type]; }}
通知监听:
只需要CMD+左键 进去UIPasteboard里面看就行了
这里附图:
扩展Extensions:
这些属性可以直接使用,例如:
取值就直接取属性值就可以了,这是一种快捷的方法;
json与字典的转换:
另外提供下字典json转换方法:
+ (NSDictionary *)dictionaryByJson:(NSString *)json { if (json == nil) { return nil; } NSData *jsonData = [json dataUsingEncoding:NSUTF8StringEncoding]; NSError *error; NSDictionary *dic = [NSJSONSerialization JSONObjectWithData:jsonData options:NSJSONReadingMutableContainers error:&error]; if(error) { NSLog(@"json解析失败:%@",error); return nil; } return dic;}+ (NSString*)dictionaryToJson:(NSDictionary *)dic{ NSError *parseError = nil; NSData *jsonData = [NSJSONSerialization dataWithJSONObject:dic options:NSJSONWritingPrettyPrinted error:&parseError]; return [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];}
附上demo地址:https://github.com/shengpeng3344/PasteboardTestDemo
0 0
- iOS学习笔记-APP共享数据之UIPasteboard使用
- iOS学习笔记-APP之间数据共享空间_APPGroup
- iOS学习笔记-APP之间数据共享空间_APPGroup
- iOS学习笔记9—精通UIPasteboard 粘贴板
- IOS学习笔记35——UIPasteboard/UIMenuController(一)
- IOS学习笔记36——UIPasteboard/UIMenuController(二)
- IOS学习笔记37——UIPasteboard/UIMenuController(三)
- IOS 剪切板(UIPasteboard)的使用
- ios 复制粘贴文本--UIPasteboard的使用
- ios开发 UIPasteboard 的简单使用
- ios开发 UIPasteboard 的简单使用
- 75.iOS使用KeyChain存储数据与不同App间共享数据
- Android学习笔记之数据的共享存储SharedPreferences
- Android学习笔记十五.使用ContentProvider实现数据共享(一)
- IOS利用app groups实现app间数据共享
- Watch App 与 iOS App 之间进行数据共享
- IOS开发学习笔记之数据存储
- app中数据的共享使用
- DP————1017
- UVA14000 Lighting System Design
- 【LeetCode】290. Word Pattern
- BFS
- 注册中过滤敏感词汇
- iOS学习笔记-APP共享数据之UIPasteboard使用
- Java Memory Model
- Android 编译x264
- Beaver's Calculator 【归并排序+贪心】
- 最大子数组 两个经典解法(动态规划,分治法)
- 【学生信息管理系统】概况总结
- MyEclipse配置安卓环境历程
- [sql]复制表数据
- HDU 1023 Train Problem II