掌握iOS Swift中的核心数据

核心数据是Apple在macOS和iOS操作系统中提供的对象图和持久性框架。 它允许将由关系实体-属性模型组织的数据序列化为XML,二进制或SQLite存储。 如果您是iOS开发人员,则必须具备有关Core Data的专业知识。 我正在逐步介绍如何使用Core Data创建人名应用程序。

在本教程结束时,您将知道如何:

  1. 使用Xcode的模型编辑器来建模数据
  2. 将新记录添加到核心数据
  3. 从核心数据中获取一组记录
  4. 使用表视图显示获取的记录。

在这个项目中,您必须在核心数据中添加一些人名,然后通过获取这些数据,将其显示在tableView中。 专为初学者设计,具有核心数据。

步骤1:建立专案

  1. 打开Xcode并基于Single View Application模板创建一个新的iPhone项目。
  2. 将应用命名为MyData并确保已选中“使用核心数据”

步骤2:将viewController嵌入导航控制器

步骤3:将tableView添加到Main.Storyboard中的View Controller中

确保将tableView插座正确连接到ViewController类。

步骤4:将栏按钮项目添加到导航栏中

将其命名为“添加名称”

确保已在ViewController类中创建了“ AddName”操作。

第5步:创建一个变量为

var名称:[String] = []

步骤6:注册tableView单元格

您必须将这些代码放入viewDidLoad中,以使用标识符“ Cell”注册tableView单元。

title =“我的朋友列表” tableView.register(UITableViewCell.self,forCellReuseIdentifier:“ Cell”)

步骤7:创建tableView数据源扩展

将tableView Datasourse扩展名放到ViewController类下面

//标记:– UITableViewDataSource

扩展ViewController:UITableViewDataSource {

func tableView(_ tableView:UITableView,numberOfRowsInSection部分:Int)-> Int {

返回names.count

}

func tableView(_ tableView:UITableView,cellForRowAt indexPath:IndexPath)-> UITableViewCell {

let cell = tableView.dequeueReusableCell(withIdentifier:“ Cell”,for:indexPath)

cell.textLabel?.text =名称[indexPath.row]

返回单元

}

}

步骤8:实施addName操作

通过创建警报控制器,提示用户输入他的朋友名称。

//实现addName IBAction

@IBAction func addName(_ sender:AnyObject){

让alert = UIAlertController(title:“新名称”,

消息:“添加新名称”,

preferredStyle:.alert)

让saveAction = UIAlertAction(title:“ Save”,

样式:.default){

[无主的自我]在

警卫让textField = alert.textFields ?.

让nameToSave = textField.text else {

返回

}

self.names.append(nameToSave)

self.tableView.reloadData()

}

让cancelAction = UIAlertAction(title:“ Cancel”,

样式:.default)

alert.addTextField()

alert.addAction(saveAction)

alert.addAction(cancelAction)

礼物(警告,动画:真实)

}

通过运行该应用程序,请确保一切正常。

步骤9:建立资料模型

  1. 在左下角添加实体以创建新实体。 双击新实体并将其名称更改为Person
  2. 用字符串类型创建一个属性名称。 属性是附加到特定实体的一条信息。

步骤10:保存到核心数据

按照以下代码片段保存朋友的名字

  1. “导入coreData”
  2. 以下内容替换 “名称”属性定义:

var朋友:[NSManagedObject] = []

3. 以下替换您的UITableViewDataSource扩展:

//标记:– UITableViewDataSource

扩展ViewController:UITableViewDataSource {

func tableView(_ tableView:UITableView,numberOfRowsInSection部分:Int)-> Int {

返回friends.count

}

func tableView(_ tableView:UITableView,

cellForRowAt indexPath:IndexPath)-> UITableViewCell {

让个人=朋友[indexPath.row]

让单元格= tableView.dequeueReusableCell(withIdentifier:“ Cell”,for:indexPath)

cell.textLabel?.text = friends.value(forKeyPath:“ name”)as? 串

返回单元

}

}

4. 找到 addName()并将保存的UIAlertAction替换为以下内容:

让saveAction = UIAlertAction(标题:“保存”,样式:.default){

[无主的自我]在

警卫让textField = alert.textFields ?.

让nameToSave = textField.text else {

返回

}

self.save(name:nameToSave)

self.tableView.reloadData()

}

5.将此代码添加到addName(_ :)下面:

为了对核心数据执行任何操作,您需要创建一个托管对象上下文。 然后调用负责选择实体的NSEntityDescription类。 最后,使用更改后的托管对象上下文提交到核心数据中。

func save(name:String){

守护让appDelegate =

UIApplication.shared.delegate为? AppDelegate else {

返回

}

// 1声明一个托管对象上下文

让managedContext = appDelegate.persistentContainer.viewContext

// 2调用NSEntityDescription类以查找名称为“ Person”的实体

让实体= NSEntityDescription.entity(forEntityName:“人”,

在:managedContext)!

让person = NSManagedObject(entity:实体,

insertInto:managedContext)

// 3设置用户名。

person.setValue(名称,forKeyPath:“名称”)

// 4亲自将更改的数据提交保存到托管对象上下文

做{

尝试managedContext.save()

people.append(人)

}将let错误捕获为NSError {

print(“无法保存。\(错误),\(error.userInfo)”)

}

}

步骤11:从核心数据中获取

1.将此代码添加到viewDidLoad()下:

覆盖func viewWillAppear(_动画:布尔){

super.viewWillAppear(动画)

卫队让appDelegate = UIApplication.shared.delegate为? AppDelegate else {

返回

}

让managedContext = appDelegate.persistentContainer.viewContext

让fetchRequest = NSFetchRequest (entityName:“ Person”)

做{

人员=尝试managedContext.fetch(fetchRequest)

}将let错误捕获为NSError {

print(“无法获取。\(错误),\(error.userInfo)”)

}

}

现在运行该应用程序并查看结果。

第12步:明白了!

这些文档记录在视频教程中。 点击以在youtube上查看:

iOS核心数据入门

非常感谢!!