2017-08-11 37 views
-1

如果在其他地方涉及此問題,我表示歉意,但我一直未能找到對此的參考。最佳實踐或方法,以查看錶單是否從其初始值發生變化

是否有內置方法或最佳實踐來確定哪些行已經從其初始值發生了變化?

+0

你是什麼意思,你的問題是什麼?請解釋你需要什麼,我可以幫你 –

+0

我有一個窗體正在編輯現有的記錄。就我而言,對該記錄的任何編輯都會禁用記錄並創建一個新記錄。因此,如果用戶打開並保存,我不想創建新記錄。所以理想情況下,我只想去形式並說「hasChanges」,如果是的話 - 我們然後迭代所有的值。如果不是,我們只是解僱。 – AlexK

+0

我通常這樣做有2個模型,一個原始和另一個與修改,然後我把模型中的方法比較值來檢查是否被修改 –

回答

0

所以這就是我最終做的 - 這一直運作良好。這僅僅是用於此目的的局部類實現:

class YourFormViewController : FormViewController { 

var formValuesChanged = [String : (Any?, Any?)]() 

override func valueHasBeenChanged(for row: BaseRow, oldValue: Any?, newValue: Any?) { 
    super.valueHasBeenChanged(for: row, oldValue: oldValue, newValue: newValue) 
    guard let rowIdentifier = row.tag else { return } 
    formValuesChanged[rowIdentifier] = (oldValue, newValue) 
} 

}

我用這個作爲我的一切形式的一個基類,然後我可以只使用:

 guard formValuesChanged.count > 0 else { 
     log.info("Did not save editor because no values were changed") 
     dismiss(animated: true, completion: nil) 
     return 
    }