first core data

//
//  TableViewController.swift
//  TestCoreData
//
//
import CoreData

import UIKit

class TableViewController: UITableViewController {
    //懒加载 需指定 该变量的类型是 AppDelegate
    lazy var appDelegate:AppDelegate = {
        let app = UIApplication.sharedApplication().delegate as! AppDelegate
        return app
    }()
//    var peoples = [NSManagedObject]()
    var peoples = [Person]()

    // MARK: - add a name
    @IBAction func add(sender: UIBarButtonItem) {
        
        let alert = UIAlertController(title: "add a name", message: "", preferredStyle: .Alert)
        let addAction = UIAlertAction(title: "add", style: UIAlertActionStyle.Default) { (action :UIAlertAction) -> Void in
            
            let name = alert.textFields![0].text
            let age = alert.textFields![1].text! as NSString
            self.saveName(name!,age: age.integerValue)
            let indexPath = NSIndexPath(forRow: self.peoples.count-1, inSection: 0)
            self.tableView.insertRowsAtIndexPaths([indexPath], withRowAnimation: .Left)
            
        }
        
        let cancelAction = UIAlertAction(title: "cancel", style: .Default, handler: nil)
        
        alert.addAction(addAction)
        alert.addAction(cancelAction)
        
        alert.addTextFieldWithConfigurationHandler(nil)
        alert.addTextFieldWithConfigurationHandler(nil)
        
        self.presentViewController(alert, animated: true, completion: nil)
        
    }
    func saveName(name:String,age:Int){
        let context = appDelegate.managedObjectContext
        
        let person = NSEntityDescription.insertNewObjectForEntityForName("Person", inManagedObjectContext: context) as! Person;
        person.name = name
        person.age = age
        
//        let entity = NSEntityDescription.entityForName("Person", inManagedObjectContext: context)
//        let person = NSManagedObject(entity: entity!, insertIntoManagedObjectContext: context)
        
//        person(name, forKey: "name")
        
        do{
            try context.save()
            peoples.append(person)
        }catch let error as NSError{
            print("could not save object(error) , (error.userInfo)")
        }
    
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
    }

    // MARK: - Table view data source

    override func numberOfSectionsInTableView(tableView: UITableView) -> Int {
        return 1
    }

    override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return peoples.count
    }

    
    override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
        let cell = tableView.dequeueReusableCellWithIdentifier("mycell", forIndexPath: indexPath)
//        cell.textLabel?.text = peoples[indexPath.row].valueForKey("name") as? String
        let name = peoples[indexPath.row].name
        let age = peoples[indexPath.row].age
        cell.textLabel?.text = "(name!) -----> (age!) 岁"
        return cell
    }

    override func viewDidLoad() {
        self.title = "name list"
        let context = appDelegate.managedObjectContext
        let request = NSFetchRequest(entityName: "Person")
        do{
//            let result = try context?.executeFetchRequest(request) as! [NSManagedObject]
//            self.peoples = result
            let result = try context.executeFetchRequest(request) as! [Person]
            self.peoples = result
        } catch let error as NSError{
            print("could not fecth (error) , (error.userInfo)")
        }
    }
   
}
原文地址:https://www.cnblogs.com/sallet/p/5292212.html