2013-04-22 5 views
1

일부 뉴스를 다운로드하고 NSLibraryDirectory에 plist 파일로 작성하는 웹 서비스가 있습니다. 그러나 사용자가 인터넷에 연결되어 있지 않거나 웹 서비스가 오프라인 상태라면 AppBundle에서 Default-Newsfile을로드합니다.파일을 앱 번들에 작성하십시오.

현재 모든 AppStoreUpdate를 업데이트하기 전에 Default-File을 수동으로 교체해야합니다.

내 질문 : 시뮬레이터를 통해 디버깅하는 동안 앱 번들에 쉽게 쓸 수있는 방법이있어서 기본 파일이 매번 업데이트됩니다.

내가 좋아하는 것에 대해 문질러서 :

#ifdef SIMULATOR 
    //Write to AppBundle 
#endif 

참고 : 모두 내가 맥과 시뮬레이터를 사용하는 동안 시간에 대해, 내가 게시 된 앱에 그렇게하고 싶지 않아입니다! 예, 이미 내 번들의 Ressource를 교체했지만 손으로 ​​자동으로 인식하려고합니다. 디바이스 또는 AppStore를 컴파일하기 전에 내 Projectfolder를 최신 상태로 유지하려고합니다.

+0

질문이 명확하지 않습니다. 디버그 모드에서 인터넷에서 뉴스를 다운로드하고 나중에 앱 번들의 일부로 * 출하 될 수있는 파일에 저장하면 원하는 것입니까? – Mar0ux

+0

정확히,하지만 문서에서 내 프로젝트 폴더로 아무 것도 복사하고 싶지 않으므로 아무런 설명도없이 동료와 프로젝트를 공유 할 수 있습니다. 그리고 아무도 미래에 뉴스 파일을 업데이트하는 것을 잊지 않을 것입니다. – xapslock

답변

1

괜찮아요 .. 당신이 ProjectXcode을 통해, 당신은 AppBundle에 자동으로 업데이트 된 파일을 얻을 귀하의 리소스를 업데이트하는 경우가 있지만, 프로그래밍 방식에 아무것도 쓸 수 없습니다 Read-only입니다 당신이 필요로하는 것 (나는 생각합니다. - 질문에 대해서는 아직 명확하지 않지만, 이것이 당신에게 효과가 있는지 알려주십시오).

  • 프로젝트 폴더 (SRCROOT)에 빈 파일 (예 : news.plist)을 만듭니다. 리포에 추가하십시오.
  • 프로젝트의 자원이 파일을 추가하고 인터넷에서 콘텐츠를 다운로드 할 때
  • Build PhasesCopy Bundle Resources 단계에서 추가, 프로젝트의 임시 폴더에 저장 한 후 선택적으로 추가 (기존 파일을 덮어 쓰기 SRCROOT/news.plist에 복사 불필요한 변경을 피하기 위해 파일 체크섬 검사). 이 단계는 시뮬레이터에서 실행할 때만 필요합니다.
  • 개발자가 체크인 할 때마다 업데이트 된 news.plist가 해당 repo에 체크인되어야합니다.

코드에서 SRCROOT을 사용하려면 GCC_PREPROCESSOR_DEFINITIONS에 SRCROOT=\"${SRCROOT}\"을 추가하십시오.

다른 개발자는 마지막 단계를 제외하고는 아무 것도 할 필요가 없습니다. 변경 될 때마다 업데이트 된 파일을 체크인하십시오.

이 정보가 도움이됩니까?

+0

당신의 포인트 3 : "SRCROOT/news.plist에 복사하십시오", 그게 내가 고민하는거야. 이 작업을 자동으로 수행하는 방법은 무엇입니까? 함수에서 SRCROOT에 액세스하는 방법 또는 다른 종류의 마법이 필요합니까? – xapslock

+0

내 편집보기 .... – Mar0ux

+0

그게 다예요, 고마워요. 이러한 큰 문제와 대답은 간단합니다. – xapslock

1

아니요, 시뮬레이터에서 App Bundle을 작성할 수는 있지만 앱 스토어 용으로 빌드 할 때 컴파일 한 파일이 업데이트된다는 의미는 아닙니다.

문서 디렉토리에 새로운 파일을 저장하는 것이 아니라 항상이 파일을로드하십시오. 응용 프로그램을 시작한 후 백그라운드 스레드를 시작하고 plist 파일을 업데이트하려고합니다. 당신은 문서 디렉토리에 plist 파일을 작성하여 뉴스를 검색하는 데 성공했습니다. 이 방법을 사용하면 장치에서 파일을 마지막으로 가져올 수있을 때 검색 한 파일이 사용자에게 있습니다.

응용 프로그램의 처음 시작시 문서 디렉토리에 복사하는 파일을 응용 프로그램 번들에 추가하여 사용자가 응용 프로그램에 데이터를 가지고 있는지 확인할 수 있습니다.

+0

네, 그게 내가 이미하고있는 것. 앱 번들에 "기본"-Plist가 있는데 나는 당신이 말했던 것처럼 다소 좋아하지만 디버깅하는 동안 파일을 올바른 폴더에 직접 쓰거나 복사하는 것을 선호하므로 언젠가는 잊지 않을 것입니다. . – xapslock

+0

그런 다음 일종의 사전 컴파일 스크립트를 사용해야합니다. – rckoenes

6

AppBundle

은, 당신의 의견에 따라, 여기
+0

시뮬레이터가있는 Mac에서는 필자가 원하는 곳 어디에서든지 쓸 수 있어야합니까? 나는 게시 된 응용 프로그램에 대해 이야기하지 않는다! – xapslock

+0

아니요, 어디서든지 쓸 수는 없습니다 .. AppBundle은 읽기 전용입니다. 그냥 실패 할 것입니다. 그런데 Default Files를'Documents Directory'에 넣을 수있는 것은 Read-Write이고 파일을 업데이트 할 수 있습니다 그 폴더에 쉽게 프로그래밍 방식으로 .. – iphonic

+0

나는 장치에 쓰고 싶다고 말한 적이 없다. – xapslock