iOS的keychain服务提供了一种安全的保存私密信息(密码,序列号,证书等)的方式,每个ios程序都有一个独立的keychain存储。相对于NSUserDefaults、文件保存等一般方式,keychain保存更为安全,而且keychain里保存的信息不会因App被删除而丢失,所以在重装App后,keychain里的数据还能使用。从ios 3。0开始,跨程序分享keychain变得可行。

第一步设置钥匙串存储分组:

第二步导入KeychainItemWrapper文件:

KeychainItemWrapper是apple官方例子“GenericKeychain”里一个访问keychain常用操作的封装类,在官网上下载了GenericKeychain项目后,只需要把“KeychainItemWrapper.h”和“KeychainItemWrapper.m”拷贝到我们项目,并导入Security.framework 。
KeychainItemWrapper的apple官方例子地址--https://developer.apple.com/library/ios/samplecode/GenericKeychain/Listings/Classes_KeychainItemWrapper_m.html

第三步设置arc: (-fno-objc-arc)
第四步存储和读取:
存储:

//    其中方法“- (void)setObject:(id)inObject forKey:(id)key;”里参数“forKey”的值应该是Security.framework 里头文件“SecItem.h”里定义好的key,用其他字符串做key程序会崩溃!

KeychainItemWrapper *wrapper = [[KeychainItemWrapperalloc]initWithIdentifier:@"Username"accessGroup:nil];

       [wrapper setObject:@"account" forKey:(__bridgeid)kSecAttrAccount];

读取:

NSString *account = [wrapperobjectForKey:(__bridgeid)kSecAttrAccount];

清空信息:

[wrapper resetKeychainItem];

//    //保存帐号

//    [wrapper setObject:@"<帐号>" forKey:(__bridge id)kSecAttrAccount];

//    //保存密码

//    [wrapper setObject:@"<帐号密码>" forKey:(__bridge id)kSecValueData];

//    //从keychain里取出帐号密码

//    NSString *password = [wrapper objectForKey:(__bridge id)kSecValueData];

注:要想多个应用共享钥匙串信息可在第一步的分组里进行设置

iOS开发钥匙串保存信息相关推荐

  1. iOS开发之保存照片到自己创建的相簿

    iOS开发之保存照片到自己创建的相簿 保存照片还可以用ALAssetsLibrary,ALAssetsLibrary提供了我们对iOS设备中的相片.视频的访问,是连接应用程序和相册之间访问的一个桥梁. ...

  2. iOS开发 Tips 保存视频文件到相册

    需要遵守这个代理 UIImagePickerControllerDelegate // path 为视频的绝对路径 /var/mobile/Containers/Data/Application/XX ...

  3. C++转iOS开发5个月总结

    啰嗦 8月5号左右突然做出了来北京工作的决定,给北京同学了解情况时正好同学公司缺人,7号来面试了下,13号一早就来报到了.自己与iOS开发还是有些缘分,3月中旬到5月初在济南一家小公司做了不到2个月的 ...

  4. 5个月iOS开发入门总结(C++转行iOS)

    前言:一个人写的ios转行总结,思路很清晰,值得学习 原文网址:http://www.cocoachina.com/bbs/read.php?tid-332587.html 啰嗦(请跳过) 8月5号左 ...

  5. 【ios开发/Xcode】使用UITableView完成学生信息及成绩的显示

    [ios开发/Xcode]使用UITableView完成学生信息及成绩的显示 设计思想 实现效果 源代码 设计思想 首先创建所有页面的故事版,包括,登录.注册与成绩页面 接着设置故事版的关联代码,如下 ...

  6. [零基础学JAVA]Java SE实战开发-37.MIS信息管理系统实战开发[文件保存](1)

    MIS信息管理系统实战开发之单独使用文件实现保存 开发背景 ID.姓名.年龄为公共信息,而学生有成绩,工人有工资 定义一个抽象类Person(ID.姓名.年龄),学生是其子类,有成绩,工人是其子类有工 ...

  7. iOS开发如何避免安全隐患

    现在很多iOS的APP没有做任何的安全防范措施,导致存在很多安全隐患和事故,今天我们来聊聊iOS开发人员平时怎么做才更安全. 一.网络方面 用抓包工具可以抓取手机通信接口的数据.以Charles为例, ...

  8. iOS开发tips总结

    tip 1 :  给UIImage添加毛玻璃效果 func blurImage(value:NSNumber) -> UIImage { let context = CIContext(opti ...

  9. iOS开发:创建真机调试证书

    http://jingyan.baidu.com/article/ff411625b8141312e48237a7.html 关于苹果iOS开发,笔者也是从小白过来的,经历过各种困难和坑,其中就有关于 ...

最新文章

  1. linux 存储映射lun 给_在Linux中针对物理磁盘和LUN映射Oracle ASM磁盘
  2. Hive mapreduce SQL实现原理——SQL最终分解为MR任务,而group by在MR里和单词统计MR没有区别了...
  3. python 实现 softmax
  4. pycharm开发python时出现控制台显示中文乱码
  5. [BUUCTF-pwn]——[极客大挑战 2019]Not Bad(ORW)(内涵peak小知识)
  6. mongodb java spring_[Java教程]Spring 与 mongoDB 整合
  7. 关于View的Animation无法停止问题
  8. Android高级控件(一)——ListView绑定CheckBox实现全选,添加和删除等功能
  9. Python 深度学习常用包汇总
  10. JSP 九大内置对象及四个作用域详解
  11. mysql max connects_出现mysql max-connections问题解决解决办法
  12. Python图像处理丨基于OpenCV和像素处理的图像灰度化处理
  13. iframe透明解决方案
  14. 01 社会网络分析基础理论!
  15. word排版学习笔记
  16. 新手小白零基础,该怎样学习编程呢?
  17. 以太网交换机MAC地址表格式 IVL和SVL
  18. Python攻城师的成长————MySQL数据库关键字
  19. 2013.6甲骨文公司的电话面试
  20. 量化分析师的Python日记【Q Quant兵器谱之函数插值】

热门文章

  1. Ubuntu22安装一些R包遇到的困难与解决方法(一)--igraph篇
  2. win10推送_微软 Win10 最稳版本 2004 正式版推送!最低配置要求汇总,全新 UI 虚拟桌面,支持几乎所有 CPU...
  3. 嵌入式Linux应用开发 1.系统编程 文件IO:open close write read lseek 通过文件io实现cp命令
  4. html5倒车游戏,html5制作转盘游戏
  5. いろいろな%前端开发面试题% 读后感
  6. 拍照前打闪的注意事项
  7. 阿里巴巴“新18罗汉”养成记
  8. cocos2d-x下硬件音量按键控制游戏音量的实现
  9. 【阿朱标红】O2O五年三次创业的九大经验(天天用车CEO翟光龙)
  10. abaqus Tie python脚本报错 原因令人震惊