文档章节

COREDATA持久化02

飞雪无痕
 飞雪无痕
发布于 2016/01/25 22:04
字数 353
阅读 41
收藏 0


由于下班时间,先把代码贴出来,以后会把代码放到git里面

//

//  ViewController.swift

//  CoreDataAPP02

//

//  Created by WHJ on 16/1/25.

//  Copyright © 2016 WHJ. All rights reserved.

//


import UIKit

import CoreData


class ViewController: UIViewController,UITableViewDelegate,UITableViewDataSource {


    @IBOutlet weak var tabview: UITableView!

    

    @IBOutlet weak var AddPerson: UIBarButtonItem!

    var peoples = [NSManagedObject]()

    override func viewDidLoad() {

        super.viewDidLoad()

        // Do any additional setup after loading the view, typically from a nib.

        

        tabview.backgroundColor = UIColor.redColor()

        tabview.delegate = self

        tabview.dataSource = self

        

        //register cellClass

        tabview.registerClass(UITableViewCell.self, forCellReuseIdentifier: "cell")

        tabview.reloadData()

        

    }


    override func didReceiveMemoryWarning() {

        super.didReceiveMemoryWarning()

        // Dispose of any resources that can be recreated.

    }


    @IBAction func AddPerson(sender: AnyObject) {

        let alert = UIAlertController(title: "Add one Person", message: "Add your name ",preferredStyle:UIAlertControllerStyle.Alert)

        let saveAction = UIAlertAction(title: "Save", style: UIAlertActionStyle.Default,

            handler: { (action:UIAlertAction) -> Void in

            let textField = alert.textFields!.first

            if let txt = textField?.text{

                self.savename(txt)

            }

            //reloadData

            self.tabview.reloadData()

            })

        

        let cancelAction = UIAlertAction(title: "cancel", style: UIAlertActionStyle.Cancel) { (UIAlertAction) -> Void in

        

        }


        alert.addTextFieldWithConfigurationHandler { (UITextField) -> Void in

        

            UITextField.placeholder = "Enter Your Name Here !"

        

        }

      

        alert.addAction(saveAction)

        alert.addAction(cancelAction)

        presentViewController(alert, animated: true, completion: nil)

        

    }

    

    //save data

    func savename(name:String){

            

            let appDelegate = UIApplication.sharedApplication().delegate as! AppDelegate

            let managedContext = appDelegate.managedObjectContext

            

            let entity = NSEntityDescription.entityForName("Person",inManagedObjectContext:managedContext)

            let person = NSManagedObject(entity: entity!, insertIntoManagedObjectContext: managedContext)

            

            person.setValue(name, forKey: "name")

            do {

                try managedContext.save()

                //5

        

                peoples.append(person)

    

            } catch let error as NSError {

                print("Could not save \(error), \(error.userInfo)") }

    

    }

    

     func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int{

        

        return peoples.count

    

    }

    

    // Row display. Implementers should *always* try to reuse cells by setting each cell's reuseIdentifier and querying for available reusable cells with dequeueReusableCellWithIdentifier:

    // Cell gets various attributes set automatically based on table (separators) and data source (accessory views, editing controls)

    

     func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell{

        let cell = tabview.dequeueReusableCellWithIdentifier("cell")

       

        let person =  peoples[indexPath.row]

        cell?.textLabel?.text = person.valueForKey("name") as? String


        return cell!

    }


    override func  viewWillAppear(animated: Bool) {

        

        super.viewDidAppear(true)

        //1

        let appDelegate = UIApplication.sharedApplication().delegate as! AppDelegate

        let managedContext = appDelegate.managedObjectContext //2

        let fetchRequest = NSFetchRequest(entityName: "Person")

        //3

        do {

            let results =

            try managedContext.executeFetchRequest(fetchRequest)

            peoples = results as! [NSManagedObject]

            } catch let error as NSError

       {

        print("Could not fetch \(error), \(error.userInfo)")

        }

        

    }

    



}



© 著作权归作者所有

飞雪无痕
粉丝 2
博文 64
码字总数 21470
作品 0
大兴
高级程序员
私信 提问
Core Data 学习笔记(一)框架简介

目录 Core Data 学习笔记(一)框架简介 Core Data 学习笔记(二)被管理对象模型 Core Data 学习笔记(三)被管理对象 Core Data 学习笔记 应用示例 Core Data 学习笔记 常用链接整理 零、前...

灰大羊
2015/07/26
0
0
iOS 数据持久化

iOS 数据持久化 在iOS中,常用的数据持久化操作有四种:plist文件,NSUserdefaults,SQLite3,CoreData. Plist文件:也就是我们常说的属性列表,它是一种明文的轻量级存储方式,存储的格式有很多种,...

GLAlanTong
2016/02/27
54
0
CoreData 专业术语整理

前言 CoreData是苹果为我们封装的一个ORM(对象关系映射)库,可以很方便的把数据库中的数据转为一个对象,把一个对象保存到数据库中。如同微软的Entity Framework、Java的hibernate~ 在学习...

DragonFK
2015/08/28
0
0
CoreData的简单使用

一.CoreData 1.CoreData用于做数据持久化,适合大数据量的存储和查询; 2.CoreData不是数据库,CoreData可以使用数据库,XML等方式来存储数据; 3.SQLite通过SQL语句操作数据,CoreData使用面...

鸡蛋炒青椒
2016/09/03
18
0
[OC]-数据缓存(coreData)

Core Data 主要对象 • NSManagedObjectContext :负责应用和数据库之间的交互 (CRUD) ; • NSPersistentStoreCoordinator :添加持久化存储库(如 SQLite 数据 库), 是物理数据存储的物理文件和...

xiaoLoo
2018/04/25
0
0

没有更多内容

加载失败,请刷新页面

加载更多

texlive安装

Installing to: D:/bin/texlive/texlive/2019Installing [001/307, time/total: ??:??/??:??]: adobemapping [2130k]Installing [002/307, time/total: 00:03/08:57]: ae [84k]Installing......

MtrS
今天
2
0
运维规范

命名规范 发布流程 监控告警 故障定位 状态 日志 监控

以谁为师
今天
2
0
约瑟夫环(报数游戏)java实现

开端 公司组织考试,一拿到考题,就是算法里说的约瑟夫环,仔细想想 以前老师将的都忘了,还是自己琢磨把~ package basic.gzy;import java.util.Iterator;import java.util.LinkedList;...

无极之岚
今天
3
0
Kernel字符设备驱动框架

Linux设备分为三大类:字符设备,块设备和网络设备,这三种设备基于不同的设备框架。相较于块设备和网络设备,字符设备在kernel中是最简单的,也是唯一没有基于设备基础框架(device结构)的...

yepanl
今天
3
0
Jenkins 中文本地化的重大进展

本文首发于:Jenkins 中文社区 我从2017年开始,参与 Jenkins 社区贡献。作为一名新成员,翻译可能是帮助社区项目最简单的方法。 本地化的优化通常是较小的改动,你无需了解项目完整的上下文...

Jenkins中文社区
昨天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部