【发布时间】:2010-12-22 21:31:17
【问题描述】:
我想创建和管理包含图像和/或音频剪辑的数据库。我知道这不是最好的主意,而且我知道有更好的选择,但这是将数据与编程分开的最简单方法,而且我不是编写代码的人。所以我需要一个允许我编辑应用程序正在调用的数据库的应用程序,并且应用程序需要调用随机音频或图像文件。我只需要知道一个 SQL 编辑器。
【问题讨论】:
标签: iphone sqlite blob blobstorage
我想创建和管理包含图像和/或音频剪辑的数据库。我知道这不是最好的主意,而且我知道有更好的选择,但这是将数据与编程分开的最简单方法,而且我不是编写代码的人。所以我需要一个允许我编辑应用程序正在调用的数据库的应用程序,并且应用程序需要调用随机音频或图像文件。我只需要知道一个 SQL 编辑器。
【问题讨论】:
标签: iphone sqlite blob blobstorage
将大文件放入数据库中是个非常糟糕的主意,它会降低性能并且很可能会破坏应用程序的内存限制。您也不能像从文件系统中那样将它们从数据库中流出。
相反,请考虑这种方法 - 正如 Alex 建议的那样,使用表示文件名的单独文件和字符串。您可以将数据库和文件放在一个目录中,您的编码器将其作为 XCode 中的文件夹引用保存 - 因此您更改的文件夹中的所有内容都会自动添加到编码项目中。请注意,如果您更改任何现有文件,由于 XCode 中的错误,他将需要在再次构建之前执行 Clean BUild,否则它不会复制更改的资产(主要是数据库的问题)。
然后您可以轻松地使用任何 SQLLite 客户端来维护文件名和其他数据的数据库。 “Base”是一款不错的独立应用。
我强烈建议您使用 Git 之类的源代码控制系统,这样您就可以签入更改,并且程序员可以立即更新他的项目,而不会混淆通过电子邮件发送文件。
【讨论】:
您可以改用Core Data。默认情况下,它使用 SQLite 后端。除了使用 BLOB,您可以简单地存储一个 NSString*,它是应用程序 Documents 文件夹中对象的路径。当您想要检索存储的图像或其他大型二进制数据对象时,可以直接从路径值加载NSData* 实例。将大文件保存在数据库之外会给您带来更好的性能。
【讨论】: