我的任务是将个人脸部识别软件移植到iOS和Mac OS X,以及帮助保持基本SDK和大部分软件尽可能跨平台。我的一个同事和我想做的事情之一就是在SQL数据库(可能是SQLite)中将数据存储在用户的脸上。我们还希望允许用户将他们的数据放在iCloud上,这样他们就不必单独训练他们的每个设备来识别它们。困扰我的是如何完成这两项任务,而且我面临着足够的选择让人感到不知所措。 (我对所涉及的一些技术还不熟悉。)
为了实现SQL,我可以直接在我的程序中嵌入SQLite并为其编写代码,或者我可以使用Core Data并让它与SQLite交谈。 (数据库不是要共享的,所以这没关系。而且SQL并不好玩。)然而,Core Data不是可移植的(更不用说编写为C ++对象的模型了),而直接编写SQL则会意味着我们可以在其他平台上重复使用更多代码。
在考虑iCloud时,事情变得更加混乱,iCloud有五种或六种可能的方式将它与程序集成。到目前为止我唯一明确排除的方法是iCloud键值存储。 (至少,用户很可能会遇到1 MB限制的麻烦,而且它显然不适用于我正在处理的任何复杂的事情。)核心数据可以通过UIManagedDocument或NSPersistentStore与iCloud集成但是,再次,这意味着可重用代码的方式更少。我可以将SQLite与UIDocument或NSDocument一起使用,但我想要做的似乎并不完全是这些对象的用途。我正在处理的文件本质上是大型的首选项文件,并不意味着最终用户可以直接与之交互; UIDocument和NSDocument似乎适用于用户可查看和可编辑的文件。然后还有iCloud Drive和CloudKit,它们仍处于测试阶段。 (另一方面,这两个将很快发布。考虑到iOS用户倾向于快速升级到最新版本的系统软件,关于使用其中任何一个基于他们能够运行多少设备的争论应该很快变得虚弱和过时。)
有人可以推荐哪种方式最适合我的目的吗?提前谢谢。
Aaron Solomon Adelman
答案 0 :(得分:2)
首先,您不想尝试直接共享SQLite文件。这极有可能破坏文件,因为SQLite并没有考虑到这种用途。
然而:
UIManagedDocument
,但它仍然需要许多其他特定于Core Data的类。最好的方法取决于您的需求。如果您希望将数据文件从iOS应用程序复制到其他平台,那么SQLite就是好的。您仍然会拥有许多特定于平台的代码,因此节省的成本要少得多。如果您不打算像这样移动数据文件,Core Data可能更容易处理。