티스토리 뷰

Key-Value Coding Programming Guide - Adopting Key-Value Coding  - Compliance Checklist

객체가 KVC를 사용하기 위해서는 아래 내용을 체크하세요 


Attribute and To-one Relationship Compliance

✅ attribute나 일대다 관계의 프로퍼티에 대해


 <key>나 is<Key>메소드를 구현하거나 <key> 나 _<key> 인스턴스를 만드세요. 프로퍼티를 자동생성으로 만들면(@property, @synthesize) 자동으로 컴파일러가 알아서 해줍니다.


!Note

프로퍼티 네임은 보통 소문자로 시작하지만, 프로토콜의 기본구현은 대문자로 시작해도 동작합니다. (URL 같은)


✅ 프로퍼티가 변경가능 하면 set<Key> 메소드를 구현하세요.  프로퍼티를 자동생성으로 만들면(@property, @synthesize) 자동으로 컴파일러가 알아서 해줍니다.


! IMPORTANT

기본 setter를 오버라이드 한다면, 그 메소드 안에서 프로토콜의 validation 메소드를 호출하지 마세요.


✅ 프로퍼티가 스칼라이면 setNilValueForKey 메소드를 오버라이드 해서 nil일 때를 대비하세요.


Indexed To-Many Relationship Compliance

✅ <key> 메소드를 구현하거나, 인스턴스 변수의 이름을 <key>, _<key>로 하세요 프로퍼티를 자동생성으로 만들면(@property, @synthesize) 자동으로 컴파일러가 알아서 해줍니다.


✅ 위에거를 대체해서 countOf<Key>를 구현하세요. 그리고 objectIn<key>AtIndex 나 <key>AtIndexes:를 구현해도 됩니다.


✅ 선택적으로 get<Key>:rage: 를 구현하세요. 퍼포먼스가 올라갈 겁니다.


더불어서  프로퍼티가 수정가능하면

✅ insertObject:in<Key>AtIndex:나 insert<Key>:atIndexes:를 구현하세요

✅ removeObjectFrom<Key>ATIndex: 나 remove<Key>AtIndexes:를 구현하세요.

✅ replaceObjectIn<Key>AtIndex:withObject:나 replace<Key>AtIndexes:with<Key>:를 구현하면 성능이 좋아집니다. 선택사항입니다.



Unordered To-Many Relationship Compliance

unordered이면서 일대다 관계인 프로퍼티(NSSet 객체 같은)에 대해서


✅ set을 리턴하는 <key>를 구현하세요. 아니면 <key>나 _<key>의 이름을 가진 NSSet 인스턴스를 만드세요. 프로퍼티를 자동생성으로 만들면(@property, @synthesize) 자동으로 컴파일러가 알아서 해줍니다.


✅ 위에거랑 양자택일로 countOf<Key>, enumeratorOf<Key>, memberOf<Key>:를 구현해도 됩니다.

더불어서 프로퍼티가 수정가능하면 

✅ add<Key>Object: , add<Key>:를 구현하세요

✅ remove<Key>Object: remove<Key>를 구현하세요.

✅ intersect<Key> 를 구현하면 성능이 좋아집니다. 선택사항입니다.


Validation

필요한 속성에 대해서 유효성 검사


validation<Key>:error:메소드를 구현하세요. 이 메소드는 값의 유효성을 나타내는 boolean값을 리턴하고, 적절할 때(NO) 일 때, error에 대한 참조를 반환합니다.



반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함