2012-03-28 1 views
4

핵심 데이터와 함께 RestKit 사용하기 사용자가 인터넷에 연결하지 않고 개체를 추가, 편집 또는 삭제할 때 개체에 플래그를 지정하고 핵심 데이터로 저장할 때 오프라인 지원을 제공합니다.RestKit - 오프라인 저장 후 추가/편집/삭제 된 개체 보내기

인터넷을 다시 사용할 수있는 경우 모든 추가/편집/삭제 된 개체를 가져 와서 배열로 저장하고 정상적인 방법을 사용하고 각 항목을 반복하여 서버에 저장하십시오. 배열의

목록
- fetchedAddedCompanies
- fetchedEditedCompanies
- fetchedAddedContacts
- fetchedEditedContacts
- fetchedDeletedContacts

초기화 방법 (편집 회사에 대한 예)

// Added Companies 
... 

// Edited Companies 
for (Company *tempObj in fetchedAddedCompanies) 
{ 
    // Find keys for selected languages 
    [self updateAccountToServer:tempObj:addCompanyContext]; 
} 

// ... 

의 끝에 updateAccountToServer 나는 서버에 매핑 된 개체 (self.company)를 게시합니다.

... 
[objectManager postObject:self.company mapResponseWith:[companyMapper inverseMapping] delegate:self]; 
... 

질문

사용자가 몇 개체를 업데이트했다 때 나는 더 효율적인 솔루션을 찾고 있어요 - 특별한 일이 있음 - 모든 편집/삭제로 인해 달리 몇 가지 새로운 개체를 추가 않았다 메소드는 서버가 저장 될 새로 작성된 각 오브젝트에 대한 ID를 리턴합니다.

1) 예를 들어. updateAccountToServer 각 편집 객체 및 구현하기 힘들 것입니다 제 생각에는 1에서 RKObjectManager (regarding this question and a good answer)

와 함께 RKRequestQueue를 사용하는 대신 객체의 배열
2))를 보낼 수 있기 때문에 각 요청에 대한 resourcePath 고유 ID를 포함, 그래서 나는이 시도했다)하지만 할 수있는 가능성 누락이 당신의 아이디어를

[syncQueue addRequest:[[RKObjectManager sharedManager] objectLoaderWithResourcePath:tempString delegate:self]]; 

감사를 사용하여 각 요청에 대한 매핑을 결합!

답변

1

나 자신과 몇몇 다른 사람들이 개발 지사를 적극적으로 연구하여 이것을 자동으로 RestKit에 통합합니다.

NSManagedObjectContext에서 변경 사항을 감시하는 RK 내부에 동기화 관리자를 구현하고 있으며 네트워크를 사용할 수없는 경우 네트워크가 다시 시작될 때까지 해당 요청을 대기시킵니다.

이 페이지에 사용 사례에 대해 자세히 말해 수 있다면, 그래서 우리는, 코드에 더 많은 도움/아이디어를 가지고 싶어요

:

https://github.com/RestKit/RestKit/pull/573

+1

이 지점은 RestKit 0.10의 한 지점 인 경우 비활성 상태 인 것처럼 보입니다. Restkit 0.20.x의 비슷한 지점에서 일하는 사람이 있습니까? – Diego

1

1의 경우, 당신이있는 NSArray를 캡슐화 할 수 있습니다 삽입/업데이트/삭제 된 개체를 새 개체로 가져온 다음 서버에 게시합니다. 이 작업을 수행하려면 해독 할 서버의 수정 된 객체에 올바른 비트가 설정되어 있는지 확인하고 서버가 객체를 수신 할 수 있는지 확인한 다음 해체하여 수정 된 객체의 배열을 가져와야합니다.