我正在查看一张桌子。单击上方有一个按钮,它会弹出带有textField的警报,并且我可以在textField上输入一些数据。单击“确定”后,警报视图中的内容将填充到表视图中。我还将这些数据存储在CoreData中。
但是问题是当我关闭应用程序或导航到另一个屏幕时,tableview中的数据会消失,因为它应该一直保留并保留在屏幕上,即使由于将数据存储在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)")
}
最佳答案
据我了解,您在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()