在tableview上持久存储数据(存储在coredata中)的问题

时间:2017-09-19 09:29:25

标签: ios swift core-data

我正在查看桌面视图。点击顶部有一个按钮,弹出一个带有textField的警报,我可以在textField上输入一些数据。单击“确定”后,将在tableview中填充alertview上的内容。我也将这些数据存储在CoreData中。

但问题是当我关闭应用程序或导航到另一个屏幕时,即使在导航到另一个屏幕或关闭应用程序时,表格视图中的数据仍然会被保留并保留在屏幕上,因为数据是存储在CoreData中。

应该做什么......?请帮忙......

此外,这是我保存数据的方式:

guard let appDelegate = UIApplication.shared.delegate as? AppDelegate else {
          return    }
let managedContext = appDelegate.persistentContainer.viewContext
let entity = NSEntityDescription.entity(forEntityName: "Category", in: managedContext)
let category = NSManagedObject(entity: entity!, insertInto: managedContext)

category.setValue(categoryName, forKeyPath: "categoryName")
category.setValue(categoryId, forKey: "categoryId")

  do {

  try managedContext.save()
  self.managedObject.append(category as! Category)
    } catch let error as NSError {
   print("Could not save. \(error), \(error.userInfo)")
   }

1 个答案:

答案 0 :(得分:1)

据我所知,您在coredata中输入的旧数据在TableView上不可见,如果是这种情况,那么它正常工作,因为TableView不会保留数据。数据保存在coreData中,您只需要从Coredata获取数据并将其加载到TableView中。

使用以下代码获取

var category  = [Category]() // Where Category = your NSManaged Class

    var fetchRequest = NSFetchRequest<NSFetchRequestResult>(entityName: "Category")

    do {
        category = try context.fetch(fetchRequest) as! [Category]
    } catch {
        fatalError("Failed to fetch category: \(error)")
    }

// Then you can use this array to populate UITableView Datasource and Call.
arrTableView = category
tableView.reloadData()