앱의 백엔드에 RestKit을 사용하고 있습니다. 모든 것이 잘 작동하지만 로컬 삭제 후 변경되지 않은 데이터를 가져 오는 문제가 있습니다.RestKit 데이터 동기화 게시물 로컬 삭제 문제
[self.objectManager addFetchRequestBlock:^NSFetchRequest *(NSURL *URL) {
RKPathMatcher *pathMatcher = [RKPathMatcher pathMatcherWithPattern:@"cards"];
if([pathMatcher matchesPath:[URL relativePath] tokenizeQueryStrings:NO parsedArguments:nil])
return [NSFetchRequest fetchRequestWithEntityName:@"Card"];
return nil;
}];
API 응답 로컬 객체 중 하나가 누락 될 때 삭제 작업 제대로 전파되어
이
경로 일치한다. 지역의 삭제가 같이 수행 할 때그러나, 상기/카드 요청이 다시 수행된다 가져 오는 경우
for(NSManagedObject *entity in cards) {
[RKManagedObjectStore.defaultStore.mainQueueManagedObjectContext deleteObject:card];
단지 CoreData에서 삭제 된 개체를 변경하지 않은 경우, 카드는 업데이트되지 않습니다. 앱이 다시 실행되거나 새 객체가 API 응답에 포함될 때까지 계속됩니다. 나는이 문제를 해결하기 위해 할 수있는 아무것도
2013-07-03 17:58:00.732 Thanx[76837:c07] I restkit.network:RKHTTPRequestOperation.m:185 GET 'http://api.thanx-web.dev/v2/cards' (200 OK) [0.1086 s]
2013-07-03 17:58:00.734 Thanx[76837:c07] <RKMappingResult: 0xac9b080, results={
"<null>" = (
);
}>
2013-07-03 17:58:00.734 Thanx[76837:c07] <RKManagedObjectRequestOperation: 0xbb32250, state: Successful, isCancelled=NO, request: <NSMutableURLRequest http://api.thanx-web.dev/v2/cards>, response: <NSHTTPURLResponse: 0xbb42060 statusCode=200 MIMEType=application/json length=201>>
있습니까 :
RKMappingResult는 서버가 적절한 JSON을 반환하는 경우에도 비어? 일종의 캐싱 문제 인 것 같습니다. 그러나 로컬 삭제 직후에 [RKManagedObjectStore.defaultStore resetPersistentStores:nil]
함수를 실행해도이 문제가 해결되지 않는 것 같습니다. - 도움을
감사합니다,
대런
편집은 여기에 해당 모델의 매핑은 다음과 같습니다
RKEntityMapping *mapping = [RKEntityMapping mappingForEntityForName:@"Card" inManagedObjectStore:self.objectManager.managedObjectStore];
// enable validations
mapping.performKeyValueValidation = YES;
// if validation fails, skip object rather than entire request
mapping.discardsInvalidObjectsOnInsert = YES;
// add json-to-model mappings
[mapping addAttributeMappingsFromArray:@"card_id", @"last4", @"name"];
식별이 card_id
에 기본값 속성 때문에 수동으로 지정되지 않았습니다.
감사합니다.
매핑에 어떤 식별 속성을 지정 했습니까? 모든 매핑을 표시하십시오. – Wain
@Wain - 응답 해 주셔서 감사합니다. 카드에 대한 매핑으로 질문을 업데이트했습니다. 식별 속성은 지정되지 않지만 RestKit은 기본적으로'card_id '를 사용합니다. 이것이 문제가 될까요? –
@Wain - 나는 그것을 테스트하고'card_id'를 수동으로 설정했습니다. 어떤 아이디어? –