课程笔记文集地址:Udemy课程:The Complete iOS 9 Developer Course - Build 18 Apps
92课是 Section 8 的总结。
93课是 Section 9 的介绍
这是 Section 7 的第一节课,慢慢的,也学了快一半多了。
从这节课开始,学习 Core Data 的一些基本知识。
一、创建使用 Core Data 的工程
在新建的工程的时候,勾选 Single View Application:
勾选 Use Core Data,(如果你在上一步使用了其他的模板,就不会出现这个选项了)如下图:
使用 Single View Application 模板,直接勾选 Use Core Data 的好处请见下图:
不仅自动创建了 Lecture94.xcdatamodeld 文件,而且在 AppDelegate.swift 文件里,会自动给你添加和 Core Data 有关的代码。如果使用其他的模板,这些都要自己手动添加。
二、设置类文件
在类的开发引入 CoreData:
import CoreData
使用前需要有的两个方法:
let appDel: AppDelegate = UIApplication.sharedApplication().delegate as! AppDelegate
let context: NSManagedObjectContext = appDel.managedObjectContext
三、写入 Entity
如下图:
四、存储数据
// 首先找到对应的 Entity
let newUser = NSEntityDescription.insertNewObjectForEntityForName("Users", inManagedObjectContext: context)
// 赋值(字典类型键值)
newUser.setValue("Rob", forKey: "username")
newUser.setValue("pass123", forKey: "password")
执行存储方法,使用 do catch 语法:
do {
try context.save()
} catch {
print("有错误!")
}
五、读取数据
这是读取数据的基本方法:
// 找到对应的 Entity
let request = NSFetchRequest(entityName: "Users")
// 如果想直接获取实际的数据值,需要设置为 false
request.returnsObjectsAsFaults = false
// 开始取出数据,使用 do catch 语法
do {
let results = try context.executeFetchRequest(request)
//判断是否存在数据
if results.count > 0 {
// 遍历数据
for result in results as! [NSManagedObject] {
print(result.valueForKey("username")!)
print(result.valueForKey("password")!)
}
}
} catch {
print("取数据出错了")
}
六、可能出现的报错
在 Entity 增加了一个新的 Attribute,然后运行,就会出现错误。
原因是之前你存储的数据里没有刚刚新添加的 Attribute,所以报错了。
解决方法:
到模拟器里删除当前的 App,然后 Xcode 里菜单栏里 Product -> Clean。再运行就没有问题了。