目录:[Swift]Xcode实际操作
本文将演示【CoreData】数据持久化存储框架的使用。
点击【Create a new Xcode project】创建一个新的项目
->【Single View App】选择创建一个简单的单视图应用->【Next】
【Product Name】:CoreDataProject
勾选使用【CoreData】数据持久化存储框架的复选框,在项目中引入该框架。
数据持久化存储框架【CoreData】提供了对象关系的映射功能,
它能够将对象转化为数据,也能够将保存在数据库中的数据,还原成对象
->【Next】->选择项目存放目录->【Create】
在项目导航区,点击打开配置管理文件【CoreDataProject.xcdatamodeId】
点击底部的【+(Add Entity)】添加按钮,添加一个实体对象。
在实体列表【ENTITIES】列表中,选择刚刚创建的实体,并给实体重新命名:【User】
在【Attribute】属性设置区,点击【+】图标,为实体添加一个属性。
然后输入属性的名称和选择属性的类型
【Attribute】:userName
【Type】:String
点击【+】图标,为实体添加第二个属性。
然后输入属性的名称和选择属性的类型
【Attribute】:password
【Type】:String
已经创建了两个属性。点击右下角【Editor Style】编辑器样式图标,切换实体编辑器的样式。
在实体编辑器的图形模式下,如果项目中有多个实体,
可以方便的查看实体之间的关系。
接着点击顶部的编辑菜单【Editor】->【CreateNSManagedObject Subclass】创建管理对象子类
在数据模型列表中,保持默认选择的需要管理的数据模型【CoreDataProject】
->【Next】在实体列表中,选择需要生成挂历对象子类的实体模型:【User】
->【Next】保持默认的存储位置,点击创建【Create】按钮,完成实体类的创建操作。
在代码中,可以看出增加了一个扩展,该扩展拥有和实体相同的属性,
在项目导航区,打开并查看实体类和实体之间的关联文件:
【User+CoreDataClass.swift】
【User+CoreDataProperties.swift】
自动创建的代码文件存在多个错误,可以点击【编译并运行按钮】
此时会出现一些错误提示,点击打开之前创建的数据模型文件:
【User+CoreDataClass.swift】
【User+CoreDataProperties.swift】
现在依次修复出现的几个问题。点击右上角,打开检查器面板,
点击【显示数据模型检查器】图标,进入检查器面板
设置【Codegen】:Manul/None
点击左侧的【显示问题导航器图标】,显示应用程序编译错误列表。
需要清除由系自动生成的类文件。
选择错误文件所在的文件夹:/User/strengthen/Library/Developer/Xcode/DerivedData/
【Comamand】+【C】复制所选的内容
【Comamand】+【Tab】切换至已经打开的文件夹窗口
【Comamand】+【Shift】+【G】打开【前往文件夹】窗口
【Comamand】+【V】将复制的文件路径粘贴到弹出窗口的输入框。
->点击【前往】,跳转到指定的文件夹,该文件夹保存了所有在编译项目时所生成的缓存文件。
【Comamand】+【A】全选此处的所有文件夹。
【Comamand】+【Deleete】
可以清除此处的缓存,当再次编译项目时还会产生新的缓存文件。
对于大型项目来说,清除此处的缓存,下一次的编译会花费更多时间,以生成新的缓存。
关闭文件夹,并返回原来的开发界面。
依次点击菜单栏【Product】->【Build】->项目已经可以正常通过编译。
在项目导航区,打开视图控制器的代码文件【ViewController.swift】
选择开始编码,实现数据的持久化功能。
1 import UIKit
2 //引入数据持久化存储框架【CoreData】
3 import CoreData
4
5 class ViewController: UIViewController {
6
7 override func viewDidLoad() {
8 super.viewDidLoad()
9 // Do any additional setup after loading the view, typically from a nib.
10
11 //获得当前程序的应用代理
12 let appDelegate:AppDelegate = UIApplication.shared.delegate as! AppDelegate
13 //通过应用代理对象,获得管理对象上下文
14 let managedObjectContext = appDelegate.persistentContainer.viewContext
15
16 //通过管理对象上下文,插入一条实体数据
17 let newUser = NSEntityDescription.insertNewObject(forEntityName: "User",
18 into: managedObjectContext) as! User
19
20 //设置实体的用户名属性的内容
21 newUser.userName = "John"
22 //设置实体的密码属性的内容
23 newUser.password = "123456"
24
25 //添加一条异常捕捉语句,用于执行数据的插入操作
26 do
27 {
28 //使用try语句,执行管理对象上下文的存储操作,插入实体对象
29 try managedObjectContext.save()
30 //在控制台打印输出日志
31 print("Success to save data.")
32 }
33 catch
34 {
35 print("Failed to save data.")
36 }
37 }
38 }