自己的 iPhone 数据格式

Posted

技术标签:

【中文标题】自己的 iPhone 数据格式【英文标题】:Own data format for the iPhone 【发布时间】:2010-03-17 14:48:39 【问题描述】:

我想为 iPhone 应用创建自己的数据格式。文件的结构应类似于例如Apple 的 iWork 文件 (.pages)。这意味着,我有一个文件夹,里面有一些文件:

The file 'Juicy.fruit' contains:
   Fruits
   ---> Apple.xml
   ---> Banana.xml
   ---> Pear.xml
   ---> PreviewPicture.png

这个文件夹“Fruits”应该打包在一个方便的文件“Juicy.fruit”中。不需要压缩。我怎么能做到这一点?我发现了一些开源 ZIP 库。但是,我想用 iPhone 的内置库(如果可能的话)构建我自己的数据格式。

最好的问候, 斯蒂芬

【问题讨论】:

我承认我对非 web 应用程序了解不多,但我仍然要问——如果打包的文件(.fruit)文件只能用于您创建的应用程序,那么为什么需要构建数据格式?应用程序不应该只知道查找文件类型并根据需要进行处理吗?或者您是否想为其他应用程序全局注册文件类型,或者当有人下载​​ .fruit 文件时 Safari 知道使用您的应用程序?再说一次,我真的很困惑,没有告诉你事情是如何运作的。 真的很快,我开始研究你的问题,我找到了一个有趣的选择。您可以向您的应用程序注册协议,以便 Safari 将协议与您的应用程序相关联。所以你可以注册fruit://,任何以它开头的链接都会打开你的应用程序。签出:***.com/questions/1286615/… 我的项目的关键点是将多个文件打包成一个文件,以便通过网络轻松交换这些捆绑包。全局注册文件类型将是一个很好的副作用,但不是必需的。 安东尼,谢谢你的链接。这将是对我最初计划的一个很好的补充。 :-) 【参考方案1】:

好的,我可以通过三种方式阅读您的问题,以下是我对每种方式的最佳猜测:

    您希望您的 .fruit 文件通过 Safari/SMS/某些网络连接与您的应用相关联(也就是当有人想要下载为您的应用制作或由您的应用制作的文件时)。

在这种情况下,您可以为您的应用注册协议,如下所述:

iPhone file extension app association

    您希望 iPhone 将 .fruit 文件与您的应用程序全局关联,在这种情况下您希望查看 Uniform Type Identifiers。基本上,您在安装程序的 info.plst 文件中设置此关联。

    您想知道如何从包含文件的文件夹转变为具有 .fruit 扩展名的单个文件(包)。

如果是这样的话,那里有很多选择,我认为推出自己的选择没有任何意义。 Microsoft 和 Adob​​e 都只是使用标准的 zip 压缩方法并使用自己的扩展名(而不是 .zip)。如果您将任何 Office 2007 文档,例如 docx 或 Adob​​e 的实验性 .pdfxml 文件放入存档实用程序(我喜欢 7z,但任何血统都可以),您将获得一个包含多个 xml 文件的文件夹,就像您一样'正在描述你的情况。 (这也是 Java 的 jar 文件类型的工作原理,仅供参考)。因此,除非您有充分的理由避免使用标准压缩方法(我投票支持 gzip),否则我会在这方面遵循行业领先地位。

我绝对能体会到在每个级别上进行 DIY 的冲动,但您基本上是在问(如果是 #3)如何创建自己的打包算法,并且在阅读了一些最基本的压缩方法是如何工作的之后,我会留下那一个。另外,我真的怀疑 Apple 是否内置了一些库来做大多数人只会使用标准方法的事情。

最后一点:

如果你真的想从头开始做(仍然建议不要),因为你的文件都是 XML,你可以创建一个新的 XML 文件来充当各种包装器,然后让每个文件进入那个包装文件。但这在解包时确实是多余的,因为每次都必须加载整个文件。但它会是这样的:

Juicy.fruit --
   <fruit-wrapper>
       <fruit>
          <apple>
              ... content from apple.xml
          </apple>
       </fruit>
       <fruit>
          <banana>
              ... content from banana.xml
          </banana>
       </fruit>
       <fruit>
          <pear>
              ... content from pear.xml
          </pear>
       </fruit>
       <picture>
              ...URL-encoded binary of preview picture
       </picture>
   </fruit-wrapper>     

但是有了这个想法,你要么必须选择解压它,从而冒着丢失文件的风险,覆盖一些但不是全部,等等等等,或者你总是把它当作一个大文件,在这种情况下,不像对于存档,您每次都必须加载所有数据才能提取任何内容,而不仅仅是从存档中提取您想要的文件。

但如果你下定决心,它可能会奏效。

此外,如果您有兴趣,还有一个专门用于移动设备上的 XML 的传输协议,称为WBXML(Wap Binary XML)。不确定它是否仍然被认真对待,但如果有适用于它的 iPhone 库,你应该研究一下。

【讨论】:

非常感谢您的想法。我喜欢你的 XML 方法。如果这不适用于我的文件大小,我将使用 gzip(不久前我发现了一个有趣的代码 sn-ps:mobileapps.de/2008/09/14/…)

以上是关于自己的 iPhone 数据格式的主要内容,如果未能解决你的问题,请参考以下文章

如何在 iPhone 上录制 AMR 音频格式?

是否可以将 Android 数据库用于 iphone 应用程序?

使用 OpenAL 将音频转换为 CAF 格式以便在 iPhone 上播放

Waltr 2 for mac(iPhone数据传输工具)2.6.26

Waltr 2 for mac(iPhone数据传输工具)2.6.26

iphone4 备份文件后缀名是啥?