2011-11-17 2 views
1

Ive는 odata sdk를 사용하여 SQL Server 데이터베이스와 통신하는 엔터프라이즈 Universal (iphone/ipad) 응용 프로그램을 만들었습니다. 모든 위대한, 잘 작동합니다. 문제는 (실제로는 문제가 아니지만 다소 제한적 임) 인터넷에 연결해야하는 정보를 검색하거나 업데이트하려는 경우 연결 솔루션이라는 것입니다.IPad/iPhone에 응용 프로그램 데이터 저장

Im 이제 연결이 끊어진 기능을 추가하려고합니다. 내 질문은 실제 장치에 큰 (비교적 큰) 양의 직렬화 된 데이터를 저장하는 방법이 있는지입니다. 나는 응용 프로그램들이 어떻게 할 수의 데이터를

어떤 아이디어를 잃게됩니다 충돌하는 경우

  1. 그것이
  2. 정말 빠른 응용 프로그램에서 메모리를 구축하기 때문에 응용 프로그램에 저장 싶지 않다 이것에 대해 가봐야 겠어?

답변

3

코어 데이터 사용 ... 애플은 아주 좋은 문서를 가지고 있습니다!

+0

코어 데이터가 장치 디스크에 저장됩니까? – Matt

+0

예, sqlite db에 저장됩니다 – vikingosegundo

+0

개체를 serialize하고 핵심 데이터에 저장하는 방법이 있습니까? 핵심 데이터에서 검색 한 후 원래 오브젝트로 다시 hyrdrate하십시오. – Matt

2

는 소리가 난다. 동기화 작업은 완벽하게 작동하기가 매우 어렵습니다. 웹 서비스가 REST와 호환되는 경우 온라인 시스템과 통신하고 해당 데이터를 iPad의 Core Data에 저장하는 솔루션으로 RestKit을 살펴볼 것입니다.

궁극적으로 데이터를 로컬로 데이터베이스에 온라인으로 복제하려는 경우 많은 양의 데이터 인 경우 Core Data를 권장합니다. 핵심 데이터 만이 복잡한 프레임 워크이므로 많은 양의 이해가 필요합니다.

고려해야 할 사항이 많이 있습니다. 얼마나 많은 데이터가 오프라인에 필요합니까? 델타 동기화를 수행 할 수 있습니까? 원격으로 이동이 발생할 때 로컬 데이터베이스에서 데이터를 이동하기 위해 데이터를 이동하는 방법과 필요한 단계는 무엇입니까? 온라인에서 레코드가 삭제되어 로컬에서 삭제해야하는 것을 어떻게 감지합니까? 사용자가 오프라인 상태에서 기존 데이터를 수정할 수 있습니까? 병합 충돌에 대해 어떻게합니까 (동일한 레코드가 온라인과 오프라인으로 편집됩니까)? 이 모든 시나리오에 대해 생각하고 싶을 것입니다.

온라인 시스템이 개발 중일 경우 CoucheBase을 고려해 볼 수 있습니다.이 어려운 동기화 문제를 처리하는 모바일 대응 물을 가지고있는 시스템도 있습니다.

행운을 빈다.