2013-04-22 70 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

相关问题