2013-09-03 4 views
0

내 iPad 앱에 데이터를 반환하는 내 애플리케이션 위에 REST 서비스가 실행 중입니다. 이 응용 프로그램은 RestKit을 사용하여 iPad 안팎으로 데이터를 동기화합니다. 그러나 나는 또한 사용자가 일부 데이터를 삭제할 수있는 웹 응용 프로그램을 실행해야합니다.코어 데이터에서 삭제 된 DB의 개체를 삭제하는 전략입니다. [RestKit/Core Data]

현재 문제는 사용자가 iPad 앱에 로그인 할 때마다 마지막 로그인 이후 last_modified/added 데이터를 가져 오는 쿼리를 실행한다는 것입니다. 이렇게하면 더 빠른/더 짧은 쿼리를 가질 수 있습니다. 유일한 문제는 예를 들어 개체가 마지막 두 번의 로그인 사이에 DB에서 삭제 된 경우 사용자가 여전히 iPad에서 해당 개체를 볼 수 있다는 것입니다.

코어 데이터의이 데이터를 삭제하기 위해 어떤 전략을 채택해야합니까? 방금 이 아닌 개체를 내 DB에서 삭제하고 "삭제됨"이라고하는 BOOL 대신 REST를 통해 last_modified 데이터를 가져올 때마다이 항목이 표시되며 iPad에서 필터링됩니다.

내가 알고있는 RestKit은 고아 오브젝트를 삭제하는 방법이 있지만 "last_modified"데이터를 동기화하므로 여기에 적용 할 수 없다고 생각합니다.

+0

응답에 DB에있는 모든 개체가 포함되어 있습니까 (응답에없는 것은 삭제해야합니다)? – Wain

+0

그게 문제입니다. 응답은 마지막으로 사용자가 로그인 한 이후에 추가/업데이트 된 객체를 포함합니다. 예를 들어 Object 1이 (ID == 1 인) Core Data에 있지만 사용자가 마지막으로 로그인 한 이후 Name 변경 사항 인 경우, 그것은 응답에있을 것입니다. 변경된 경우에는 변경되지 않습니다. 삭제 된 경우 누가 알 수 있습니까?! – abisson

+0

그런 다음 서버는 실제로 삭제 목록을 유지하고 해당 개체를 플래그로 보내야합니다. – Wain

답변

0

는 :

나는 CoreData에서 삭제해야 할 객체의 목록을 만들었습니다. 따라서 예를 들어 CoreData에서 삭제해야하는 사용자에 해당하는 IDS 배열을 반환합니다. RestKit으로 어떻게 매핑 할 수 있습니까?!

NSMutableArray으로 매핑을 만들어야합니다. 소스 데이터가 문자열의 JSON 배열이면 대상 배열에 추출 된 문자열을 얻기 위해 nil 키 경로 매핑을 사용해야합니다. this link을 참조하십시오.

+0

좋습니다. 하지만 RestKit은 방금 매핑 된 ID로 객체를 삭제하려고 할 수 있습니까? 매핑 된 NSArray를 루프 처리하고 직접 삭제해야합니까? 아니면 ...? – abisson

+0

직접 삭제해야합니다. RestKits 삭제 방법은 사용 사례를 위해 설계되지 않았습니다. 가져 오기 삭제 요청으로 작업을 수행 할 수는 있지만 인위적인 작업이라고 생각됩니다. – Wain

0

Wain이 제안했듯이 "deleted_date"필드가있는 데이터베이스에서 삭제 된 개체 목록을 갖게됩니다. 최신 개체를 가져올 때마다 최신 삭제 된 개체를 다시 가져옵니다. 귀하의 코멘트 질문에서