2017-07-05 5 views
1

NSManagedObjectサブクラスに属するプロパティに対してcustom property validationを設定しようとしています。ドキュメントによると、以下のようにスウィフト3で、このような方法のための一般的なシグネチャは次のとおりです。Swiftのコアデータプロパティ検証3

func validate<Key>(value: AutoreleasingUnsafeMutablePointer<AnyObject?>) throws 

私の財産はamountと呼ばれているので、私は持っている:

class Transaction: NSManagedObject { 

    @NSManaged var amount: Float 

    func validateAmount(value: AutoreleasingUnsafeMutablePointer<AnyObject?>) throws { 
     // custom validation logic... 
    } 
} 

私はそれを理解したよう新しいトランザクションインスタンスを作成し、そのamountプロパティを設定し、マネージオブジェクトコンテキストを保存しようとすると、関連するインスタンスでvalidateValue:forKey:が呼び出され、カスタム検証メソッドが見つけ出されて呼び出される必要があります。残念ながら、これは起こっていません:validateValue:forKey:が呼び出されますが、私のメソッドは無視されます。

これはsample project(Xcode 8.3.3で書かれています)ですべて見ることができます。誰かが間違っていると私に教えてもらえれば幸いです。

+1

'func validateAmount(_値:AutoreleasingUnsafeMutablePointer )throwsは正しい署名であるようです。 –

答えて

2

func validateAmount(_ value: AutoreleasingUnsafeMutablePointer<AnyObject?>) throwsと呼ばれます。 validateValue(_ valueのような_を追加してください。

+0

ブリリアント!私は今寝ることができます。 –