다음과 같은 방법으로 RestKit (0.10.0) 및 코어 데이터가 백엔드에있는 서버에서 편집 된 개체를로드합니다. 앱이 포 그라운드로 들어갈 때마다 동기화 프로세스의 일부로 메소드가 호출됩니다.RestKit - 캐시가 두 번째 호출시에만 코어 데이터에 저장됩니다.
[syncObjectManager loadObjectsAtResourcePath:[NSString stringWithFormat:@"?config=accounts&since=%@", lastSync] usingBlock:^(RKObjectLoader *loader) {
[loader.mappingProvider setObjectMapping:companyMappingSync forKeyPath:@"data"];
loader.backgroundPolicy = RKRequestBackgroundPolicyContinue;
loader.delegate = self;
}];
응답이 정상적으로로드되고 캐시도 발견 된 것으로 보입니다.
2012-04-11 15:58:32.147 mobileCRM[3575:707] T restkit.support:RKCache.m:82 Found cachePath '/var/mobile/Applications/C5E4BF4F-4CB0-4F4C-AC11-FC1E17AE4AF2/Library/Caches/RKClientRequestCache-www.URLTOSERVER.de/PermanentStore/37abc4aff62918578288d10530e6bcd6' for PermanentStore/37abc4aff62918578288d10530e6bcd6
2012-04-11 15:58:32.152 mobileCRM[3575:707] T restkit.support:RKCache.m:119 Wrote cached data to path '/var/mobile/Applications/C5E4BF4F-4CB0-4F4C-AC11-FC1E17AE4AF2/Library/Caches/RKClientRequestCache-www.URLTOSERVER.de/PermanentStore/37abc4aff62918578288d10530e6bcd6'
2012-04-11 15:58:32.158 mobileCRM[3575:707] T restkit.support:RKCache.m:100 Writing dictionary to cache key: 'PermanentStore/37abc4aff62918578288d10530e6bcd6.headers'
2012-04-11 15:58:32.159 mobileCRM[3575:707] T restkit.support:RKCache.m:82 Found cachePath '/var/mobile/Applications/C5E4BF4F-4CB0-4F4C-AC11-FC1E17AE4AF2/Library/Caches/RKClientRequestCache-www.URLTOSERVER.de/PermanentStore/37abc4aff62918578288d10530e6bcd6.headers' for PermanentStore/37abc4aff62918578288d10530e6bcd6.headers
2012-04-11 15:58:32.166 mobileCRM[3575:707] T restkit.support:RKCache.m:103 Wrote cached dictionary to cacheKey 'PermanentStore/37abc4aff62918578288d10530e6bcd6.headers'
"street"속성의 변경 사항을 테스트 할 때 변경 사항도 잘 매핑됩니다.
2012-04-11 15:58:33.013 mobileCRM[3575:1a03] T restkit.object_mapping:RKObjectMappingOperation.m:332 Mapped attribute value from keyPath 'street' to 'street'. Value: Musterweg 55
작업을 마친 후 새 fetchRequest를 호출하고 속한 테이블보기를 다시로드합니다.
문제
든 변경된 객체의 첫 번째 호출 후에 (커밋 메시지에도 코어 데이터로 나타낸다) 백엔드에 저장되지 않는다.
그러나 앱을 다시 열어 메서드를 다시 호출하면 새로 고침 된 데이터가 예상대로 표시됩니다. 그래서 첫 번째 호출에서 메서드를 작동 시키려면 고심하고 있습니다.
의견을 보내 주셔서 감사합니다.
질문/답변 구성표에 따라 솔루션을 답변으로 게시하고 동의해야합니다. 이것은 다른 사용자가 이것이 해결 된 질문이며 답을 찾을 수 있도록 도와줍니다. – Kai
다음 번에 기억해 주셔서 감사합니다! – flashfabrixx