我在应用程序上使用 TouchDB 与云上的 CouchDB 服务器同步数据。
一切正常,但我现在需要使用应用程序包部署应用程序的预加载版本,因此用户不必下载 MB 的静态数据。
这样做的最佳方法是什么?我正在考虑只在我的项目中包含带有数据库和附件的 TouchDB 目录,在初始化 TouchDB 数据库之前,我检查它是否存在于“应用程序支持”数据库下,如果不存在,则将其复制到我的代码中。
这是正确的方法吗?
我在应用程序上使用 TouchDB 与云上的 CouchDB 服务器同步数据。
一切正常,但我现在需要使用应用程序包部署应用程序的预加载版本,因此用户不必下载 MB 的静态数据。
这样做的最佳方法是什么?我正在考虑只在我的项目中包含带有数据库和附件的 TouchDB 目录,在初始化 TouchDB 数据库之前,我检查它是否存在于“应用程序支持”数据库下,如果不存在,则将其复制到我的代码中。
这是正确的方法吗?
您可以在应用程序包中包含数据库和附件目录,然后使用
-(BOOL) replaceWithDatabaseFile: (NSString*)databasePath
withAttachments: (NSString*)attachmentsPath
error: (NSError**)outError;
https://github.com/couchbaselabs/TouchDB-iOS/blob/master/Source/TD_Database.h#L87
看起来这在执行您计划的操作之前会进行一些完整性检查:
https://github.com/couchbaselabs/TouchDB-iOS/blob/master/Source/TD_Database.m#L91
但是,这确实意味着您不必使复制代码与数据库保存其文件的位置保持同步。