2010-02-17 3 views
2

저는 사용자 계정과 웹 API를 사용하여 웹 사이트에서 결과 (json)를 얻는 iPhone 앱을 개발하고 있습니다. 결과는 사용자의 이벤트 목록입니다. 캐쉬 할 시점과 API 호출시기 및 iPhone SDK에 이러한 시나리오를 처리 할 수있는 기능이 내장되어있는 경우에 대한 조언이나 전략을 찾아보십시오.iPhone 데이터 모범 사례 - 캐싱 대 원격

서버에서 결과를 얻으면 컨트롤러에 배열을 채 웁니다. UI에서는 테이블 목록보기에서 개별 이벤트 결과보기로 이동할 수 있으므로 두 컨트롤러가 동일한 이벤트 개체에 대한 참조를 공유합니다. 까다로운 것은 사용자가 이벤트의 세부 정보를 변경할 수 있다는 것입니다. 이 경우 사용자가 변경 한 경우 로컬 이벤트 객체의 사본을 만들어 오류가 발생하는 경우를 대비해 작성합니다. API 호출이 성공적으로 진행되어 서버에서 해당 이벤트를 업데이트하면 이벤트 복사본에서 로컬 변경 사항을 가져 와서 원래 Event 객체를 setter와 일치하도록 설정합니다. 로컬 이벤트 객체가 UI에 반영 될 수 있도록 로컬 이벤트 객체에 변경 사항이 있는지를 관찰하는 원래 컨트롤러가 있습니다. 이것이 올바른 방법일까요? 서버에서 데이터를 다시로드하기 위해 너무 많은 API 호출을하고 싶지는 않지만 사용자가 업데이트를 한 후에 API 호출로 목록을 다시 가져와야합니까? ... 내 로컬 객체가 리모컨과 동기화되지 않도록 조심하고 싶습니다. 모든 조언을 주시면 감사하겠습니다.

답변

2

제가 만든 앱으로 비슷한 접근 방식을 취했습니다. 코어 데이터를 사용하여 원격 데이터 모델의 복제본을 만들었고 동기화 문제를 방지하기 위해 백엔드에서 etags를 사용했습니다 (제 경우에는 중복 레코드를 만드는 것이 좋습니다).

좋은 접근 방법 인 것 같습니다.

0

몇 시간 전에 iOS 앱을 개발했는데, 몇 가지 네트워크 호출을 피하기 위해 서버와 로컬에 데이터를 저장하는 요구 사항이 거의 같았으며 사용자는 지연없이 정보를 볼 수있었습니다.

해당 앱에서 사용자는 사진, 노드, checkIns 및 소셜 미디어 게시물을 저장할 수 있으며이 모든 데이터로 앱은 아름다운 타임 라인을 형성 할 수 있습니다. 그래서 우리가 한 일은 로컬에 모든 것이 있었고 사용자 폰이 WIFI 존에 올 때마다 서버에 데이터 업로드를 시작하고 (로컬 및 원격) 데이터베이스를 동기화하기 시작했습니다.

이 방법은 한 명의 사용자 만이 데이터에 액세스 할 수있는 경우에 유용합니다.