如何从Swift中的textFieldDidEndEditing调用NSManagedObject validateValue

时间:2015-11-19 15:40:00

标签: ios swift core-data

我想更新模型并在每次文本字段更改时执行验证。 我目前在textFieldDidEndEditing委托中,但我很难搞清楚在validateValue方法中传递什么

func textFieldDidEndEditing(textField: UITextField) {

 updateCustomObject() // sets the property to the value of the textfield

 // What is the proper syntax here
 customObject.validateValue(AutoreleasingUnsafeMutablePointer<AnyObject?>, forKeyPath: <String>)
}

1 个答案:

答案 0 :(得分:0)

在自定义对象中,覆盖validateForInsert和/或validateForUpdate:

完成此操作后,只需保存您的托管对象并捕获错误:

(这只是一个例子而不是工作代码......)

do {
   try managedObjectContext.save()
catch {
  if let validationError = error as? ValidationError {
      //inform the user or do something useful here
  }
}

您的自定义对象可能包含以下内容(例如,不完整或有效)

enum ValidationError: ErrorType {
    case TooLong
    case TooShort
}

extension CustomObject {

    override func validateForInsert() throws {
        //similar to below
    }

    override func validateForUpdate() throws {
        let success = //some conditions
        if success == false {
            throw ValidationError.TooLong
        }
    }
...