gpt4 book ai didi

swift - 在 Viewcontrollers 中更新导航 - Coredats

转载 作者:行者123 更新时间:2023-11-28 06:29:25 25 4
gpt4 key购买 nike

我是一名使用 Swift 的新程序员。在我的项目中,我使用了 coredata 和很多 View Controller 。

我有这个 View Controller :

Viewcontroller1 有我的主 Viewcontroller (VC1)。Viewcontroller2 (VC2),带有从我的核心数据重新加载的项目列表(在 TableView 中)。Viewcontroller2(VC3),在VC2中列出选中项的属性。Viewcontroller2 (VC4),让用户在VC2中编辑选中项的属性。

所以这是我的导航:VC1 -> VC2 -> VC3 -> VC4。

问题:假设我在 VC1 并转到 VC2。我现在从 View Controller 中选择一个项目,它将我带到 VC3(我推 VC3)。我现在在项目特性中。从核心数据中列出。为了编辑它们,我制作了一个带有 segue VC4 的按钮,我在其中制作了一个 View ,用户可以在其中更改所选项目的值。一旦用户在文本字段中引入任何更改,我就会执行 NSFetchRequest,并像这样更新值:

@IBAction func saveButton(_ sender: UIBarButtonItem) {

let app = UIApplication.shared.delegate as! AppDelegate
let context = app.persistentContainer.viewContext
let request = NSFetchRequest<NSFetchRequestResult>(entityName: "Simulator")

do {

let results = try context.fetch(request)

if results.count > 0 {

for result in results as! [NSManagedObject] {

result.setValue(designLabel.text, forKey: "designation")
result.setValue(typeLabel.text, forKey: "type")
result.setValue(localLabel.text, forKey: "local")
do {
try context.save()
} catch {
print("Error updating")
}


}
}
} catch {

print ("Error")
}
_ = self.navigationController?.popViewController(animated: true)

}

所以现在,通过按下保存按钮,我更新本地、名称和类型属性,然后弹出 VC3。现在在 VC3 中,我希望收到更新值。相反,我收到的是旧值。这是我在 VC3 中的内容:

 override func viewWillAppear(_ animated: Bool) {

super.viewDidAppear(animated)

map.delegate = self

let fetchRequest:NSFetchRequest<Simulator> = Simulator.fetchRequest()

do{
let searchResults = try DatabaseController.getContext().fetch(fetchRequest)

for result in searchResults as [Simulator]{

if (String(describing: result.objectID) == choosenID)
{
self.title = result.designation
localLabel.text = "Local: \(result.local!)"
typeLabel.text = "Type: \(result.type!)
print("I found it") //to check if I go inside this = and I go inside (true)

{
}
}
catch{
print("Error: \(error)")
}

}
}

现在我按下后退按钮并转到 VC2:一些东西。标签上有名称的单元格仍然没有更新它。所以我去VC!使用后退按钮。现在,如果我转到 VC2 或 VC3,所有内容都会更新。

这是怎么回事?为什么当我从 VC4 弹出到 VC3 时它不更新?

最佳答案

当您返回时,您将回到原来的 View ,当您前进时,您将重新加载它。不过,您可以做的是在返回时重新加载数据。

关于swift - 在 Viewcontrollers 中更新导航 - Coredats,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40785208/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com