私はSwiftを使用している新しいプログラマです。 私のプロジェクトでは、私はcoredataとたくさんのView Controllerを使用しています。ViewControllerのナビゲーションの更新 - Coredats
私は、このビューコントローラを持っている:
Viewcontroller1は私の家のViewController(VC1)を持っています。 Viewcontroller2(VC2)、(テーブルビューで)私のcoredataからリロードされた項目のリスト。 Viewcontroller2(VC3)は、VC2で選択された項目の属性をリストします。 Viewcontroller2(VC4)は、VC2で選択された項目の属性を編集します。
これは私のナビゲーションです:VC1 - > VC2 - > VC3 - > VC4
問題: 私はVC1におり、VC2に行くと言います。 ビューコントローラからアイテムを選択すると、VC3に移動します(私はVC3を押します)。 私は今アイテムの特性になっています。それらはcoredataからリストされています。 それらを編集するために、私は、ユーザーが選択したアイテムの値を変更することができるビューを作成したボタン、セグ、VC4を使用しました。ユーザーがテキストフィールドに変更を導入したら、私は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)
}
はだから今、saveButtonを押すことで、私は地元、名称や種類atributesを更新し、ポップ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にポップアップすると、なぜ更新されないのですか?
戻ったときにデータを再読み込みしようとしましたか? – AMAN77
私はなぜそれを知っていると思います。私はどこにデータを更新していません... –