2012-11-13 5 views
-1

iPad 응용 프로그램 (목표 c)에서 가장 좋은 작업을 수행하는 방법을 알기 위해이 질문을 게시하고 있습니다.네트워크가 다운되었을 때 iPad 응용 프로그램에 대한 데이터 저장

언제든지 잃어 버릴 수없는 중요한 정보를 기록하는 응용 프로그램을 구축 중이며 네트워크가 다운 된 경우에도 원활하게 작동해야합니다. 앱은 실제로 데이터가 저장 될 것으로 예상되는 때마다 웹 서비스를 호출하여 데이터를 데이터베이스에 저장합니다.

내가 달성하고 싶은 것은 네트워크가 다운되었을 때 원활하게 작동하고 사용자가 응용 프로그램에서 작업 할 수있게 해주는 응용 프로그램이며 네트워크가 작동하는 즉시 마침내 데이터베이스와 동기화됩니다.

누구나 저에게 가장 좋은 방법을 제안 할 수 있습니까?

+0

CoreData를 사용할 수 있습니다. – Ali

+2

특별히 도움이 필요한 것은 무엇입니까? 너는 네가 필요한 것을 알고있는 것처럼 들린다. – woz

+0

데이터를 오프라인 파일에 저장하려는 경우 iCloud API 및 오프라인 지원을 살펴볼 수도 있습니다. – Ali

답변

3

가장 좋은 방법은 다음과 같습니다 그것은 앱의 출시 사이에 약이 될 수 있도록

  1. 항상, 영구 저장소에 로컬로 첫 번째 데이터를 저장합니다. 코어 데이터, NSKeyedArchiver 또는 디스크에 저장하는 다른 방법을 사용할 수 있습니다.
  2. 어떤 데이터를 업로드해야하는지 알려주는 방법이 있습니다. 업로드 후 데이터를 보관할 필요가 없다면 쉽게 업로드 할 수 있습니다. 항목을 업로드 할 때 삭제하면됩니다. 로컬 사본을 보관하려면 "dirty"플래그로 표시하고 항목이 업로드되면이 플래그를 지울 수 있습니다.
  3. 업로드해야 할 항목이 있는지 주기적으로 확인하고 업로드해야하는지 확인하십시오. NSTimer 또는 디스패치 대기열을 사용하여이 작업을 수행 할 수 있습니다. 백그라운드 스레드에서 작동하는 메서드를 사용하는 경우 스레딩 문제가 발생하지 않도록주의하십시오.

업로드가 실패하면 먼저 업로드 한 다음 디스크에 저장하십시오. 더 간단하게 들릴 수도 있지만 (네트워크가 나쁘면 추가 작업 만하고있는 것입니다.), 당신은 일을하는 사람이 아닙니다. 컴퓨터가 있습니다. 수행해야하는 작업은 코드를 작성, 디버그 및 유지 관리하는 작업이며, "재시도"방법을 사용하는 경우 데이터에는 업로드 할 경로가 두 개 있기 때문에 유지 관리가 더 복잡합니다.

+0

데이터를 로컬로 저장하려면 NSKeyedArchiver를 사용하여 로컬로 저장할 수 있습니까? –

+0

@AshokAmbrose 예. 아마. – benzado

+0

데이터가 항상 로컬로 버퍼링되고 버퍼링 핸들이 웹 서비스의 상태를 알고 있으면 데이터는 하나의 경로를 통해서만 이동합니다. –

관련 문제