Swift 4.0教程的核心数据

核心数据 -核心数据是用于管理应用程序中的数据模型层对象或实例上下文的框架。 它为与对象生命周期和对象图管理(包括持久性)相关的常见任务提供了通用的自动化数据存储解决方案。

选通启动Goto Xcode并在单个视图上创建New iOS Project。 项目名称CoreDataSwift

在“界面”构建器中单击Main.Storyboard,然后单击项目导航编辑器-嵌入-导航控制器。

然后,单击导航ViewController之后,然后将TableView拖到ViewController中。

使TableView viewcontroller出口代理,数据源并导入CoreData

ViewController类:UIViewController,UITableViewDataSource,UITableViewDelegate {

覆盖func viewDidLoad(){

//加载视图后进行其他任何设置,通常是从笔尖进行。

覆盖func didReceiveMemoryWarning(){

super.didReceiveMemoryWarning()

//处理所有可以重新创建的资源。

下一个IBOutlet属性TableView UITableView是tableView并注册tableView笔尖viewDidLoad

@IBOutlet弱var tableView:UITableView!

覆盖func viewDidLoad(){

tableView.register(UITableViewCell.self,forCellReuseIdentifier:“单元格”)

//加载视图后进行其他任何设置,通常是从笔尖进行。

现在我们将选择函数UITableViewDataSource

func numberOfSections(在tableView中:UITableView)-> Int {

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

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

让人=人[indexPath.row]

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

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

开始构建并运行Project CoreDataSwift应用程序ViewController类似于Simulator

Xcode自动创建数据模型

创建新实体名称“人”并创建属性“名称”类型字符串

现在拖动一个Bar Button项目添加 viewController导航栏

现在在Add BarButtonItem上创建一个addName函数

@IBAction func addName(_ sender:Any){

let alert = UIAlertController(标题:“新名称”,消息:“添加新名称”,preferredStyle:.alert)

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

保护,让textField = alert.textFields?。首先,让nameToSave = textField.text else {

self.save(name:nameToSave)

self.tableView.reloadData()

让cancelAction = UIAlertAction(标题:“取消”,样式:.default)

alert.addAction(saveAction)

alert.addAction(cancelAction)

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

现在创建两个var名称,人物可变数组

ViewController类:UIViewController,UITableViewDataSource,UITableViewDelegate {

var people:[NSManagedObject] = []

@IBOutlet弱var tableView:UITableView!

覆盖func viewDidLoad(){

tableView.register(UITableViewCell.self,forCellReuseIdentifier:“单元格”)

//加载视图后进行其他任何设置,通常是从笔尖进行。

创建保存功能以管理保存核心数据

func save(name:String){

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

让managedContext = appDelegate.persistentContainer.viewContext

让entity = NSEntityDescription.entity(forEntityName:“人”,在:managedContext中)!

让person = NSManagedObject(实体:实体,insertInto:managedContext)

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

尝试managedContext.save()

}将let错误捕获为NSError {

打印(“无法保存。\(错误),\(错误.userInfo)”)

//由Praveen Raman在17年12月28日创建。

//版权所有©2017 Apple。 版权所有。

ViewController类:UIViewController,UITableViewDataSource,UITableViewDelegate {

var people:[NSManagedObject] = []

@IBOutlet弱var tableView:UITableView!

覆盖func viewDidLoad(){

tableView.register(UITableViewCell.self,forCellReuseIdentifier:“单元格”)

//加载视图后进行其他任何设置,通常是从笔尖进行。

func numberOfSections(在tableView中:UITableView)-> Int {

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

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

让人=人[indexPath.row]

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

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

@IBAction func addName(_ sender:Any){

let alert = UIAlertController(标题:“新名称”,消息:“添加新名称”,preferredStyle:.alert)

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

保护,让textField = alert.textFields?。首先,让nameToSave = textField.text else {

self.save(name:nameToSave)

self.tableView.reloadData()

让cancelAction = UIAlertAction(标题:“取消”,样式:.default)

alert.addAction(saveAction)

alert.addAction(cancelAction)

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

func save(name:String){

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

让managedContext = appDelegate.persistentContainer.viewContext

让entity = NSEntityDescription.entity(forEntityName:“人”,在:managedContext中)!

让person = NSManagedObject(实体:实体,insertInto:managedContext)

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

尝试managedContext.save()

}将let错误捕获为NSError {

打印(“无法保存。\(错误),\(错误.userInfo)”)

覆盖func didReceiveMemoryWarning(){

super.didReceiveMemoryWarning()

//处理所有可以重新创建的资源。

输出:-


最初发布在 iosdeveloperlive.blogspot.com上