2017-04-21 11 views
0

내 Swift 앱에 문제가 있습니다. Swift 3과 Xcode 8을 사용했습니다.자세히보기에서 개체를 읽을 수 있습니까?

TableViewController와 DetailViewController를 구현했습니다.

그래서 새 항목을 추가하고 TableViewController를 자동으로 새로 고치고 싶습니다.

그래서 DetailViewController에서 확인 버튼을 클릭 할 때 호출 한 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") 
     } 
    } 

나는 내있는 TableView에 새로운 항목을 추가 할 수 있습니다. 나는 새로운 항목을 추가하려고한다면, 나는 vistaDettaglio.nuovaLuce = NIL이

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) 
     } 

    } 

:

는 DetailViewController의 코드입니다.

어떻게이 문제를 해결할 수 있습니까?

+0

LuciKitCoreDataController.shared.update (updateLuci : self.nuovaLuce!) – KKRocks

+0

'viewWillAppear'이벤트에서 데이터를 다시 'tableVC'로 보내거나 가져올 수있는 프로토콜을 만들 수 있습니다. 이를 위해'detailVC'에 대한 클래스 참조를 생성하고이를 유지할 수 있습니다. 'tableVC'의'viewWillAppear'에'detailVC' 객체가 메모리를 가지고 있는지 확인하십시오. 그렇다면 데이터를 가져 오십시오. –

+0

@KKRocks 데이터베이스에 라인 업데이트 개체 – bircastri

답변

0

Reactive Cocoa이 정확한 작업에 대한 경이로움이 작용합니다. 그것을 들여다보십시오.

약간 기술적 인 것 같으면 사용자 정의 알림 및 알림 센터를 사용해 보거나 KVO를 사용하여 상세보기의 항목이 변경된 시점 및 시점을 결정할 수 있습니다.