Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/105.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios tableview上持久化数据(存储在coredata中)的问题_Ios_Swift_Core Data - Fatal编程技术网

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

Ios tableview上持久化数据(存储在coredata中)的问题,ios,swift,core-data,Ios,Swift,Core Data,我有一个桌面视图。点击顶部有一个按钮,弹出一个带有文本字段的警报,我可以在文本字段中输入一些数据。单击“确定”,alertview上的内容将填充到tableview中。我还在CoreData中存储这些数据 但问题是,当我关闭应用程序或导航到另一个屏幕时,tableview中的数据会被删除,而它本应一直保留在屏幕上,即使在导航到另一个屏幕或关闭应用程序时也会保留在屏幕上,因为数据存储在CoreData中 应该怎么做。。。?请帮忙 此外,这也是我保存数据的方式: guard let appDeleg

我有一个桌面视图。点击顶部有一个按钮,弹出一个带有文本字段的警报,我可以在文本字段中输入一些数据。单击“确定”,alertview上的内容将填充到tableview中。我还在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()
var category=[category]()//其中category=您的NSManaged类
var fetchRequest=NSFetchRequest(entityName:“类别”)
做{
category=try context.fetch(fetchRequest)as![category]
}抓住{
fatalError(“未能获取类别:\(错误)”)
}
//然后可以使用此数组填充UITableView数据源并调用。
arrTableView=类别
tableView.reloadData()

请显示您的代码以获得更好的响应您是否保存了托管对象上下文?@Paulw11是否应该提取数据,以便在我访问屏幕时将其显示在tableview上…?是的,如何加载表视图的数据?self.anArrayToHoldValues.append(self.myString)self.categoryTableView.reloadData()不起作用,@sudhir kumar。第三行的语法似乎不正确。谢谢你告诉我,我已经编辑了我的代码。Sudhir kumar说,希望这个帮助看起来仍然存在问题。此行抛出错误“arrTableView=category”,因为包含tableview元素的数组是字符串类型,“category”是“category”类型。将数组的字符串类型更改为Category类型的数组也会影响许多其他位置…:(