iOS学习之Persist Data
来源:互联网 发布:网络商标注册 编辑:程序博客网 时间:2024/06/01 10:07
教程地址:https://developer.apple.com/library/ios/referencelibrary/GettingStarted/DevelopiOSAppsSwift/Lesson10.html#//apple_ref/doc/uid/TP40015214-CH14-SW1
app保存用户数据(Persist Data)的比较简单的方法是用NSCoding,NSCoding是一个协议,可以archive 对象或其他较简单的结构,获取的对象可以保存在本地,以便以后重新运用。
*(1)实现一个编码键(code key)的结构体
每个key对应需要保存对象的一个属性,如:
var name:String
var photo:UIImage?
var rating:Int
对应:
struct PropertyKey {
staticlet nameKey = "name"
staticlet photoKey = "photo"
staticlet ratingKey = "rating"
}
(2)数据的类要继承两个协议::NSObject,NSCoding,NSCoding是编码和解码的协议,主要是要实现两个方法:
funcencodeWithCoder(aCoder:NSCoder): 为编码保存数据做准备,要用到aCoder.encodeObject(name,forKey:PropertyKey.nameKey)方法
init(coderaDecoder: NSCoder) 解码提取数据时用,可以定义为requiredconvenienceinit?(coderaDecoder:NSCoder) 实现 用aDecoder.decodeObjectForKey(key)
- (3) 创建保存数据的文件路径
staticlet DocumentsDirectory = NSFileManager().URLsForDirectory(.DocumentDirectory,inDomains: .UserDomainMask).first!
staticlet ArchiveURL = DocumentsDirectory.URLByAppendingPathComponent("meals")
DocumentsDirectory是用户Document目录对应的URL,ArchiveURL是用Append(meals)方法后的URL
(4)保存数据和获取本地数据的方法实现 save() load()
(1)~(3)可以在数据类中实现,(4)应在_viewcontroller中实现
save():NSKeyedArchiver.archiveRootObject(meals,toFile:Meal.ArchiveURL.path!),meals是数据类Meal的对象数组,Meal是数据类。保存数据用NSKeyedArchiver.archiveRootObject
load():NSKeyedUnarchiver.unarchiveObjectWithFile, 其中注意类型转换 as
(5) 在相应的地方调用save() load(),如在viewdiload()中load()数据,在数据被编辑发生改变的地方调用save()
0 0
- iOS学习之Persist Data
- iOS Apps 开发(Swift)(11)——Persist Data
- IOS开发之——Core Data学习
- IOS开发之——Core Data学习
- IOS开发之——Core Data学习
- ios开发学习笔记--数据持久化之Core Data
- Guice 3.0 学习 persist jpa
- iOS大典之Core Data
- Hibernate4.1之persist方法
- Hibernate学习篇11——session方法之save与persist
- thinkphp 学习之data方法
- Using the Android Application class to persist data
- WARNING: Data partition already in use. Changes will not persist!
- iOS学习笔记——Core Data
- iOS学习笔记——Core Data
- IOS学习笔记——Core Data
- IOS学习笔记——Core Data
- iOS学习笔记——Core Data
- 安卓菜鸟开发笔记简易窃听器
- 如何跨UI实现功能
- HDU 2767 强联通分量
- c++第六次上机实验-项目2-数组合并
- Java之块的执行顺序
- iOS学习之Persist Data
- FFmpeg实用命令
- 5月23号 硕士毕业预答辩关于ppt的相关要求
- hrbust 1375 The Active Leyni【暴力打表+递推+矩阵快速幂】
- U盘安装CentOS7遇到:init... timeout
- [Java]ThreadPoolExecutor源码分析
- Spring-mybatis的整合
- ColorDescriptor software v4.0 一个提取颜色特征描述子的软件包
- hdoj2053