自己的 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 和 Adobe 都只是使用标准的 zip 压缩方法并使用自己的扩展名(而不是 .zip
)。如果您将任何 Office 2007 文档,例如 docx
或 Adobe 的实验性 .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 数据格式的主要内容,如果未能解决你的问题,请参考以下文章
是否可以将 Android 数据库用于 iphone 应用程序?
使用 OpenAL 将音频转换为 CAF 格式以便在 iPhone 上播放
Waltr 2 for mac(iPhone数据传输工具)2.6.26