Key-Value Coding Programming Guide 官方文檔第二部分第5節 2018.9.20 第一次修正html
iOS-KVC官方文檔第二部分第5節swift
鍵值編碼協議定義了支持屬性驗證的方法。就像使用基於鍵的訪問器來讀取和寫入符合鍵值編碼的對象的屬性同樣,您也能夠按鍵(或鍵路徑)驗證屬性。當您調用validateValue:forKey:error:
(或validateValue:forKeyPath:error:
) 方法時, 協議的默認實現將搜索接收驗證消息的對象 (或在鍵路徑的末尾的對象), 以查找名稱與模式匹配的方法validate<Key>:error:。若是對象沒有此類方法, 則默認狀況下驗證成功, 默認實現返回
YES`。當存在屬性特定的驗證方法時, 默認實現將返回調用該方法的結果。app
注意 您一般僅在
Objective-C
中使用此處描述的驗證。在 Swift 中, 經過依賴 optionals 和強類型檢查的編譯器支持, 能夠更便捷地處理屬性驗證, 同時使用內置的 willSet 和 didSet 屬性觀察器來測試任何運行時 API 協定, 詳見 The Swift Programming Language (Swift 4.2) 中*Property Observers*章節對willSet
didSet
的描述。ide
因爲屬性特定的驗證方法經過引用的方式接收值和錯誤參數, 所以驗證有三種可能的結果:測試
NSError
指示失敗緣由的對象。清單 6-1顯示瞭如何調用name
字符串的驗證的示例。ui
Person* person = [[Person alloc] init];
NSError* error;
NSString* name = @"John";
if (![person validateValue:&name forKey:@"name" error:&error]) {
NSLog(@"%@",error);
}
複製代碼
一般, 鍵值編碼協議及其默認實現都不定義任何自動執行驗證的機制。相反, 您能夠在您的應用程序中使用適合的驗證方法。編碼
某些其餘Cocoa技術在某些狀況下會自動進行驗證。例如, Core Data
會在保存託管對象上下文時自動執行驗證 (詳見*Core Data Programming Guide)。此外, 在 macOS 中, Cocoa Bindings
容許您指定驗證是否自動進行 (請閱讀Cocoa Bindings Programming Topics*瞭解有關Cocoa Bindings的更多信息。)。spa
因爲筆者水平有限,文中若是有錯誤的地方,或者有更好的方法,還望大神指出。 附上本文的全部 demo 下載連接,【GitHub】。 若是你看完後以爲對你有所幫助,還望在 GitHub 上點個 star。贈人玫瑰,手有餘香。code