无法将数据从CoreData加载到tableview中

我正在学习如何使用CoreData。 我有一个添加button,这只是一个文本字段和保存button视图的tableView。 按下button时,文本字段中的string保存在CoreData数据库中:

@IBOutlet weak var name: UITextField! @IBAction func onSave(sender: UIBarButtonItem) { saveItem(name.text!) self.dismissViewControllerAnimated(true, completion: nil) } private func saveItem(itemName: String) { let appDelegate = UIApplication.sharedApplication().delegate as! AppDelegate let managedContext = appDelegate.managedObjectContext let entity = NSEntityDescription.entityForName("Item", inManagedObjectContext: managedContext) let item = NSManagedObject(entity: entity!, insertIntoManagedObjectContext: managedContext) item.setPrimitiveValue(itemName, forKey: "name") do { try managedContext.save() listItems.append(item) }catch let error { print(error) } 

tableView文件具有Controller类和NSManagedObject的全局数组:下面是相关的代码:

 var listItems = [NSManagedObject]()//outside the class override func viewWillAppear(animated: Bool) { //in the tableviewcontroller class let appDelegate = UIApplication.sharedApplication().delegate as! AppDelegate let managedContext = appDelegate.managedObjectContext let fetch = NSFetchRequest(entityName: "Item") do { let results = try managedContext.executeFetchRequest(fetch) listItems = results as! [NSManagedObject] //EDIT for item in listItems { print(item) } } catch let error { print(error) } self.tableView.reloadData() } override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { let cell = tableView.dequeueReusableCellWithIdentifier("cell", forIndexPath: indexPath) let item = listItems[indexPath.row] cell.textLabel?.text = item.valueForKey("name") as? String return cell } 

数据库非常简单:名为Item的实体具有name属性

但是,这不起作用。 当我按保存button,没有新的行被添加。 如果我删除viewWillAppear中的所有代码,但self.tableView.reloadData() ,行被创build,但是当我重新启动应用程序,他们不在那里。

任何帮助将非常感激。