为有牺牲多壮志,敢教日月换新天。

[Xcode 实际操作]七、文件与数据-(11)数据持久化存储框架CoreData的使用:创建CoreData实体并插入数据

热烈欢迎,请直接点击!!!

进入博主App Store主页,下载使用各个作品!!!

注:博主将坚持每月上线一个新app!!!

目录:[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 }

 

posted @ 2018-12-01 15:12  为敢技术  阅读(400)  评论(0编辑  收藏  举报