2013-04-22 103 views
1

我有一個Web服務來下載一些消息並將它們寫入plist文件NSLibraryDirectory某處,這很好。但是,如果用戶沒有互聯網連接或Web服務處於脫機狀態或其他情況,我從AppBundle中加載一個Default-Newsfile。將文件寫入應用程序包

目前,我必須在每個AppStoreUpdate之前手動替換默認文件以保持其保持最新狀態。

我的問題:在通過模擬器進行調試時,是否有一種簡單的方法可以寫入App Bundle,因此默認文件每次都是最新的。

我因子評分大約是這樣的:

#ifdef SIMULATOR 
    //Write to AppBundle 
#endif 

注: 這是關於在我使用Mac和模擬器的時候,我並不想這樣做,在已公佈! 是的,我已經替換了我的Bundle中的Ressource,但手動,我希望它自動實現。 我想在我爲任何設備或AppStore編譯它之前,讓我的Projectfolder保持最新狀態。

+0

問題不明確。這是你想要的 - 當在調試模式下運行時,從互聯網上下載新聞並將其保存到一個文件中,稍後可以*發佈*作爲應用程序包的一部分? – Mar0ux 2013-04-26 08:32:53

+0

沒錯,但我不想將文檔中的任何內容複製到我的項目文件夾中,因此我可以與我的同事共享該項目,而無需任何解釋。沒有人會忘記將來更新新聞文件。 – xapslock 2013-04-26 08:59:25

回答

1

好吧,根據您的意見,這裏的你需要什麼(我認爲 - 在這個問題上仍然不完全清楚,但讓我知道這是否適用於你)。

  • 在項目文件夾(SRCROOT)中創建一個空文件(如news.plist)。將此添加到您的回購。
  • 在項目的資源添加該文件,並在Build Phases
  • 當您下載從互聯網上的內容添加進來Copy Bundle Resources一步,將其保存到項目的臨時文件夾,然後將其複製到SRCROOT/news.plist覆蓋現有文件(可以選擇添加檢查文件校驗和以避免不必要的更改)。只有在模擬器上運行時才需要執行此步驟。
  • 無論何時開發人員辦理登機手續,應將更新後的news.plist簽入回購協議。

要使代碼中的SRCROOT可用,請將SRCROOT=\"${SRCROOT}\"添加到GCC_PREPROCESSOR_DEFINITIONS中。

除了最後一步之外,其他開發人員不需要執行任何操作 - 每次更改時都檢入更新的文件。

這有幫助嗎?

+0

在你的第3點:「然後將其複製到SRCROOT/news.plist」,這就是我正在努力。如何自動執行此操作?如何在函數中訪問SRCROOT或者需要其他類型的魔法來執行此操作? – xapslock 2013-04-26 09:56:27

+0

看到我的編輯.... – Mar0ux 2013-04-26 10:00:20

+0

就是這樣,謝謝。這麼大的麻煩和答案就是這麼簡單。 – xapslock 2013-04-26 10:41:10

1

不,您可能可以讓模擬器向您發送App Bundle,但這並不意味着您的項目文件(在爲應用商店構建時編譯的文件)將被更新。

爲什麼不直接將新文件保存到文檔目錄,然後始終加載此文件。應用程序啓動後,啓動後臺線程並嘗試更新plist文件。您是否成功地通過在文檔目錄中寫入plist文件來檢索新聞。 通過這種方式,用戶將擁有上次獲取該文件時檢索到的文件。

您可以在第一次啓動應用程序時複製到文檔目錄的應用程序包中添加一個文件,以確保用戶在應用程序中有數據。

+0

是的,那就是我已經在做的事情。我在應用程序包中有一個「默認」列表,我或多或少地像你說的那樣做,但我寧願在調試時自動將文件直接寫入或複製到正確的文件夾,所以我不會在某個時候忘記它。 – xapslock 2013-04-22 07:22:26

+0

然後你將不得不使用某種預編譯腳本。 – rckoenes 2013-04-22 07:29:09

6

AppBundleRead-only如果您在Project通過Xcode,您在AppBundle自動獲得更新的文件更新的資源,你不能寫任何東西給它編程,但是..

+0

雖然在模擬器的Mac上,我應該能夠寫任何我想要的,或不是?我不會談論已發佈的應用程序! – xapslock 2013-04-22 07:24:37

+0

沒有,你不能在任何設備上寫字.. AppBundle是隻讀的..它只會失敗..順便說一下,你可以把你的默認文件放在'Documents Directory'中,它是Read-Write,你可以更新文件在那個文件夾很容易編程.. – iphonic 2013-04-22 07:26:32

+0

我從來沒有說過,我想寫在一個設備上。 – xapslock 2013-04-22 07:30:37

相關問題