1

我正在开发一个应用程序,我正在使用 SQLite 3 在本地存储我的数据。现在我将在未来更新同一个应用程序的版本,我将不得不在删除它后使用下载和安装新的 IPA 文件来更新它。

但是这里出现了问题。客户端希望在不使用 Web 服务器的情况下,在较新的版本中替换先前版本中本地存储的数据。

我浏览了几个 链接,所有结果都变成了否定响应我想知道是否有任何方法可以帮助我将数据库存储在应用程序文件夹之外,这样即使删除应用程序也不会影响数据库和较新的版本可以从同一个数据库中获取数据。还是有其他方法?感谢您提前回复。

4

4 回答 4

2

您应该将数据库存储在Documents文件夹中,因为其中的所有内容仍然存在,即使通过应用商店更新了应用程序(如果您删除应用程序,那么这也会被删除..所以请记住这一点)

Documents您可以在名为的文件夹中创建一个单独的文件夹Database,并将您的文件存储在其中。您可以创建这样的路径..

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
NSString *documentsDirectory = [paths objectAtIndex:0]; // Get documents folder
NSString *dataPath = [documentsDirectory stringByAppendingPathComponent:@"Database"];

编辑:

由于即使在删除应用程序后您仍想保留它,由于应用程序的沙盒功能,我认为您无法在设备上执行此操作,但您仍然有更多选择..

您可以在您的个人服务器上备份此数据库,并且每次安装应用程序时,它都应查询服务器是否存在该特定用户的数据库。如果它存在,您可以下载并将其存储在文档目录中,否则您给他一个新数据库。您可以每隔一段时间执行一次此备份,也可以为用户自己提供同步选项。希望这会有所帮助。

于 2012-05-08T06:11:38.217 回答
2

iOS 数据存储指南。

iCloud 包括备份,它每天通过 Wi-Fi 自动备份用户的 iOS 设备。备份应用程序主目录中的所有内容,但应用程序包本身、缓存目录和临时目录除外。购买的音乐、应用程序、书籍、相机胶卷、设备设置、主屏幕和应用程序组织、消息和铃声也会得到备份。因为备份是无线完成的,并为每个用户存储在 iCloud 中,所以最好尽量减少为您的应用存储的数据量。大文件会延长执行备份所需的时间,并消耗更多用户可用的 iCloud 存储空间。

为确保备份尽可能高效,请务必按照以下准则存储应用程序的数据:

  1. 只有用户生成的或应用程序无法重新创建的文档和其他数据,才应存储在 /Documents 目录中,并由 iCloud 自动备份。

  2. 可以再次下载或重新生成的数据应存储在 /Library/Caches 目录中。您应该放在 Caches 目录中的文件示例包括数据库缓存文件和可下载内容,例如杂志、报纸和地图应用程序使用的内容。

  3. 仅临时使用的数据应存储在 /tmp 目录中。虽然这些文件没有备份到 iCloud,但请记住在完成后删除这些文件,以免它们继续占用用户设备上的空间。

  4. 使用“不备份”属性指定应保留在设备上的文件,即使在存储空间不足的情况下也是如此。将此属性用于可以重新创建但即使在存储空间不足的情况下也需要保留的数据,以便您的应用程序正常运行,或者因为客户希望它在离线使用期间可用。此属性适用于标记的文件,无论它们位于哪个目录,包括 Documents 目录。这些文件不会被清除,也不会包含在用户的 iCloud 或 iTunes 备份中。由于这些文件确实使用设备上的存储空间,因此您的应用程序负责定期监控和清除这些文件。学到更多

有关更多信息,请阅读 iOS 应用程序编程指南。

于 2012-05-08T06:42:40.627 回答
0

如果您想在删除应用程序时保留应用程序数据,您基本上有两种选择:

  • 将应用数据存储在您的服务器上
  • 将应用程序数据同步到iCloud等云服务

删除应用程序后,无法(AFAIK)将应用程序数据保留在设备上。

于 2012-05-08T06:27:43.583 回答
0

您不能将任何用户数据存储在 Documents 文件夹之外,因为 Apple 反对。如果您确实将用户数据存储在其他地方 - 您将在 Apple 应用审核期间被拒绝您的应用。

于 2012-05-08T06:28:05.083 回答