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

    目录:[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 }
  • 相关阅读:
    GetAwaiter和GetResult
    Sql中的小数点和保留位数
    简单工厂类
    c#种GetType()和TypeOf()的区别
    php 内置正则配置邮箱
    通过手机号获取定位
    使用navicat连接mysql 报错:2003-Can't comment to Mysql server on '192.168.X.X'(10038)
    java基础系列(七):内部类的详解
    bootstrap : 响应式导航
    CSS
  • 原文地址:https://www.cnblogs.com/strengthen/p/10049580.html
Copyright © 2011-2022 走看看