2012-09-08 2 views
2

나는 훌륭한 작업을하는 마스터/세부 UI에 바인딩 된 ArrayController가 있습니다. 지금은 모델 수준에서 유효성 검사를 구현하려고합니다. ,키 값 코딩 유효성 검사를 구현하는 방법

-(BOOL)validateProjectName:(id *)ioValue error:(NSError * __autoreleasing *)outError 

그러나 불행히도 : 그래서 "프로젝트 이름"의 모델 속성이있는 경우는해야 자동 화재 다음

-(BOOL)validateName:(id *)ioValue error:(NSError * __autoreleasing *)outError 

:

Apple docs은 다음과 개별 속성의 유효성을 검사하는 작업을해야 표시 그것은 단지 발생하지 않습니다 : (

그러나 흥미롭게도 "모든 걸 잡으십시오"방법을 사용하면 작동합니다 :

-(BOOL)validateValue:(inout __autoreleasing id *)ioValue forKey:(NSString *)inKey error:(out NSError *__autoreleasing *)outError { 

이 메서드 내에서 어떤 속성이 유효한지 확인하기 위해 코드를 작성할 수 있지만 접근기 메서드를 완전히 무시한 이유를 알 수 없습니다.

누구든지이 문제에 관해 밝힐 수 있습니까?

+0

재산 신고서를 함께 제출하십시오. – jrturton

+0

'@property (strong) NSString * projectName;' – Adsborough

답변

0

검증 방법은 자동으로 화재를하지 않습니다 - 연결된 문서에서 :

In general, key-value coding does not perform validation automatically—it is your application’s responsibility to invoke the validation methods.

또한 : 두 번째 상황을 설명

You can call validation methods directly, or by invoking validateValue:forKey:error: and specifying the key. The default implementation of validateValue:forKey:error: searches the class of the receiver for a validation method whose name matches the pattern validate:error:. If such a method is found, it is invoked and the result is returned. If no such method is found, validateValue:forKey:error: returns YES, validating the value.

합니다.

+0

그래, 문제는 마술처럼 스스로 해결 됐고 왜, 어떻게 ... 나는 Xcode를 재시작했다. 그 원인. – Adsborough

관련 문제