掌握iOS Swift中的核心数据
核心数据是Apple在macOS和iOS操作系统中提供的对象图和持久性框架。 它允许将由关系实体-属性模型组织的数据序列化为XML,二进制或SQLite存储。 如果您是iOS开发人员,则必须具备有关Core Data的专业知识。 我正在逐步介绍如何使用Core Data创建人名应用程序。
在本教程结束时,您将知道如何:
- 使用Xcode的模型编辑器来建模数据
- 将新记录添加到核心数据
- 从核心数据中获取一组记录
- 使用表视图显示获取的记录。
在这个项目中,您必须在核心数据中添加一些人名,然后通过获取这些数据,将其显示在tableView中。 专为初学者设计,具有核心数据。
步骤1:建立专案
- 打开Xcode并基于Single View Application模板创建一个新的iPhone项目。
- 将应用命名为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:建立资料模型
- 在左下角添加实体以创建新实体。 双击新实体并将其名称更改为Person
- 用字符串类型创建一个属性名称。 属性是附加到特定实体的一条信息。
步骤10:保存到核心数据
按照以下代码片段保存朋友的名字
- “导入coreData”
- 用以下内容替换 “名称”属性定义:
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核心数据入门
非常感谢!!