自己的iPhone数据格式

时间:2010-03-17 14:48:39

标签: iphone cocoa-touch file packaging

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

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

此文件夹“Fruits”应包装在方便的文件'Juicy.fruit'中。压缩是没有必要的。我怎么能实现这个目标?我发现了一些开源ZIP库。但是,我想用iPhones内置库(如果可能的话)构建我自己的数据格式。

祝你好运, 斯蒂芬

1 个答案:

答案 0 :(得分:3)

好的,所以我有三种方式来阅读你的问题,这是我对每一个问题的最佳猜测:

  1. 您希望通过Safari /短信/某些网络连接将您的.fruit文件与您的应用相关联(也就是当有人想下载为您的应用制作或由您的应用制作的文件时)。
  2. 在这种情况下,您可以为您的应用注册协议,如下所述:

    iPhone file extension app association

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

    2. 您想了解如何将包含文件的文件夹转换为具有.fruit扩展名的单个文件(包)。

    3. 如果是这种情况,那里有很多选择,我没有看到自己的目的。 Microsoft和Adobe都使用标准的zip压缩方法并使用自己的扩展(而不是.zip)。如果您将任何office 2007文档(例如docx或Adobe的实验.pdfxml文件)放入存档实用程序(我喜欢7z,但任何下降的文件都可以),您将获得一个包含多个xml文件的文件夹就像你描述你的情况一样。 (这也是Java的jar文件类型的工作方式,fyi)。因此,除非你有充分的理由避免使用标准压缩方法(我投票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二进制XML)。不确定它是否仍然被认真对待,但如果有一个iPhone库,你应该研究它。