2011-09-13 1 views
6

다른 스레드를 납치하고 싶지 않기 때문에 매핑에 관한 나의 질문이옵니다.(RestKIt에서) 객체 매핑을 어디에 둘 것인지

먼저 읽기 : Where's the best place to put object mappings in RestKit

내가 대답 블레이크 워터스가 나보다 그가 훨씬 더 똑똑하고 경험이 많은 사람이기 때문에 매우 정확 가능성이 의지를 준 확신하지만, 나에게 로직이 넣어 나에게 말한다 각 모델의 매핑 : 모델에서 무언가를 변경하면 매핑을 변경하기 위해 스크롤 할 수 있습니다.

내 AppDelegate에서는 각 모델에서 initMappings (또는 원하는 이름은 무엇이든)을 호출합니다.

답변

1

나는 또한 나의 모델에 매핑을 적용하는 팬입니다. 각 모델에 클래스 메서드를 추가하여 매핑하면 필요할 때마다 매핑을 얻을 수 있습니다.

+ (RKObjectMapping *)objectMapping 
{ 
    RKObjectMapping *mapping = [RKObjectMapping mappingForClass:[self class]]; 

    [mapping mapKeyPath:@"Id"  toAttribute:@"id"]; 
    [mapping mapKeyPath:@"Subject"  toAttribute:@"subject"]; 
    [mapping mapKeyPath:@"Message"  toAttribute:@"message"]; 
    [mapping mapKeyPath:@"PostDate"  toAttribute:@"postDateStr"]; 
    [mapping mapKeyPath:@"StatusId"  toAttribute:@"statusId"]; 
    [mapping mapKeyPath:@"StatusDate" toAttribute:@"statusDateStr"]; 

    mapping.setNilForMissingRelationships = YES; 

    return mapping; 
} 
0

나는 카테고리를 생성하고 거기에 넣는 경로를 선택했습니다. 필자는 매핑 공급자가 아닌 응용 프로그램 위임 클래스에서이 클래스를 만들었습니다.

모델에있는 문제는 다른 스레드에서 설명한 것과 같습니다. 관계가있는 경우 원형 참조로 끝날 수 있습니다.

0

난 당신이 코드와 그 청소기보다 효율적으로 제어 할로는 감각이, 즉 당신이 할 방법을 생각하는 것은 매우 당연하다 생각하지만, 당신은 매우 신중해야 많은이 말했듯이, 문제가 순환 참조와 함께 큰 문제가 될 수 있습니다.

해당 문제에 대한 해결책은 B 엔터티가 B를 가리키고 B가 A 키인 경우 두 엔티티 중 하나에서 엔티티를 직접 매핑하지 않도록 선택해야합니다. 그렇지 않으면 루프가 종료됩니다 .

동일한 범위의 모든 항목을 가지고있는 경우 원형 참조를 정의하면 A의 참조를 추가하기 위해 B의 초기 정의가 필요하므로 불가능합니다. 방금 언급 한 해결책은이 방법에서 자연스럽게 수행하는 방법입니다.

귀하와 귀하의 앱에 어떤 접근 방식을 사용 하느냐에 따라 귀하와 귀하 팀이 채택하는 것이 더 좋습니다. 가능한 오류와 깨끗한 코드 중 하나를 선택해야합니다.