저는 RestKit으로 처음으로 일하고 있습니다. 아쉽게도 현재 프로젝트에서 루프가 발생했습니다.RestKit : 두 개의 개별 피드, 두 개의 서로 다른 개체 유형. 하나의 객체 관리자?
먼저 두 피드가 있습니다. 뉴스에 대한 하나 개의 사진에 대해 하나 ...
뉴스 피드 ...
[
{"id":1234, "title":"Top story"},
{"id":1235, "title":"Next story"},
{"id":1236, "title":"Final story"}
]
사진 ...
[
{"id":1919, "url":"president.jpg"},
{"id":1920, "url":"celebrity.jpg"},
{"id":1921, "url":"sports.jpg"}
]
공급 ... 내 핵심 데이터 모델에서 나는이 단체가 이러한 속성과 일치하는 생성됩니다. 나는
RKManagedObjectMapping* newsMapping = [RKManagedObjectMapping mappingForEntityWithName:@"News"];
newsMapping.primaryKeyAttribute = @"id";
[newsMapping mapKeyPath:@"id" toAttribute:@"id"];
[newsMapping mapKeyPath:@"title" toAttribute:@"article_id"];
[objectManager.mappingProvider setMapping:newsMapping forKeyPath:@"News"];
RKManagedObjectMapping* photoMapping = [RKManagedObjectMapping mappingForEntityWithName:@"Photo"];
photoMapping.primaryKeyAttribute = @"id";
[photoMapping mapKeyPath:@"id" toAttribute:@"id"];
[photoMapping mapKeyPath:@"url" toAttribute:@"url"];
[objectManager.mappingProvider setMapping:photoMapping forKeyPath:@"Photo"];
... 나는 지정된 keyPaths이 피드에 존재하지 않는 것을 알고 있지만, 빈 keyPaths를 제공하고있어 위의 코드에서 단지를 덮어 듯 ... 또한 설치 RestKit 내 매핑이 매핑과 RestKit은 피드에없는 keyPAths를 무시하는 것처럼 보였다. 다음으로 각 뷰 컨트롤러에서 객체를 표시 할 때 꽤 유사한 코드를 실행합니다 ...
... 충분한 배경. 이 모든 코드는 모두 뉴스와 사진을 제로로로드합니다. 사진 매핑을 주석 처리하면 모든 뉴스 항목이 채워지고 뉴스 매핑을 주석 처리하면 내 사진이 상점에 표시됩니다.
RestKit은 각 피드의 콘텐츠를 매핑과 일치시킬 수 없습니다. 피드에 지정된 것이 없으므로 setMapping : forKeyPath :에 지정된 키 경로가 작동하지 않습니다. 아마 objectManager.inferMappingsFromObjectTypes = YES라고 생각했을 때 RestKit은 각 피드의 내용을 검사하고 적절한 매핑을 선택했지만 그렇지 않았습니다. 또한, 나는 objectMappingForClass를 가정했다 : 자동으로 정확한 매핑을 얻겠지만, 그렇지 않았다. 누구든지이 아이디어를 만드는 방법을 알고 있습니까?
업데이트 : 사실, 앱이 처음 실행될 때로드 된 항목이 없다고보고하더라도, 중지했다가 다시 실행하면 20 개의 뉴스 항목과 20 개의 사진이 캐시에서로드됩니다. 이 메시지는 한 번 실행하여 "0 개의 News 개체를 모두 로컬 저장소에 캐싱"메시지를보고 즉시 .sqlite 파일을 열고 예상대로 20 개 항목을 모두보고 확인했습니다.