// // 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)") } } }