私はSwiftアプリに問題があります。私はSwift 3とXcode 8を使用しました。詳細ビューからオブジェクトを読み取るにはどうすればよいですか?
私はTableViewControllerとDetailViewControllerを実装しました。
私は新しい項目を追加し、TableViewControllerを自動的に更新したいと思います。
これは、DetailViewControllerから[OK]ボタンをクリックしたときに呼び出すTableViewControllerのコードです。 vistaDettaglio.nuovaLuceがnullでない場合
@IBAction func tornaAllaLista(_ segue: UIStoryboardSegue){
do {
var vistaDettaglio: AggiungiLuceViewController = segue.source as! AggiungiLuceViewController
if(vistaDettaglio.nuovaLuce != nil){
//verifico se devo aggiungere un valore o lo devo aggiornare
print(vistaDettaglio.isNew)
if(vistaDettaglio.isNew){
self.listaLuci.append(vistaDettaglio.nuovaLuce!)
}else{
}
self.tabella.reloadData()
}
} catch let errore {
print("[CDC] problema tornaAllaLista")
print(" Stampo l'errore: \n \(errore) \n")
}
}
は、私は私のテーブルビューに、この新しい項目を追加したいです。
これはDetailViewControllerのコードです:
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
//se il pulsante cliccato è diverso da OK torno indietro
if sender as? NSObject != self.buttonOK{
return
}
let nomeLuce = self.textNomeLuce.text!
let pinArduino = Int16(self.textPinArduino.text!)
let tipoLuce = self.textTipoLuce.text!
self.nuovaLuce?.descrizione = nomeLuce
self.nuovaLuce?.pin_arduino = pinArduino!
self.nuovaLuce?.tipo_luce = tipoLuce
//DEVO VERIFICARE SE SONO IN MODIFICA O SALVATAGGIO
if(self.nuovaLuce != nil && (self.nuovaLuce?.id)! > 0){
self.isNew = false;
LuciKitCoreDataController.shared.update(updateLuci: self.nuovaLuce!)
}else if(nomeLuce.characters.count>0){
self.isNew = true
//ho inserito almeno un carattere
let idInsert = LuciKitCoreDataController.shared.addLuce(descrizione: nomeLuce, pin_arduino: Int(pinArduino!), id: -1 , tipoLuce: tipoLuce)
self.nuovaLuce?.descrizione = nomeLuce
self.nuovaLuce?.pin_arduino = pinArduino!
self.nuovaLuce?.tipo_luce = tipoLuce
self.nuovaLuce?.id = idInsert
}else{
let alert = UIAlertController(title:"Attenzione", message: "Inserire un nome per la Luce", preferredStyle: UIAlertControllerStyle.alert)
alert.addAction(UIAlertAction(title: "OK", style: UIAlertActionStyle.default, handler: nil))
self.present(alert, animated:true, completion: nil)
}
}
私は新しいアイテムを追加しようとするのであれば、私はvistaDettaglio.nuovaLuce = NILを持っています。
この問題を解決するにはどうすればよいですか?
:LuciKitCoreDataController.shared.update(updateLuci:!self.nuovaLuce) – KKRocks
あなたが戻っ 'tableVC'にデータを送信したり、バック「viewWillAppear」イベントにデータをフェッチする' protocol'を作成することができます。そのために、 'detailVC'のクラスリファレンスを作成し、それを生かしておくことができます。 'tableVC'の' viewWillAppear'に 'detailVC'オブジェクトがメモリを持っているかどうかをチェックします。そうであれば、データを取得しようとします。 –
@KKRocksデータベースに更新するオブジェクト – bircastri