在我的应用程序中,我将一些照片保存在沙盒中,并将其绝对路径保存在数据库中。然后我再次构建并运行,我获取路径并尝试获取照片,它说该文件不存在。
最后,我发现每次构建和运行我的应用程序时,应用程序的路径都不同。
我使用NSTemporaryDirectory()
获取临时路径,我运行两次并得到两个结果。
/私有的/ var /移动/应用/ 80E09BB5-5FEB-4C27-935E-E29DE7861392 / TMP / /私有的/ var /移动/应用/ 71427100-0DBF-42F0-B6B4-F88F6417292E / TMP /
这是正常的吗?当用户更新我的应用时,绝对路径会改变吗?
如果正常,我应该保留数据库中的相对路径吗?有一些最佳做法吗?
答案 0 :(得分:5)
将绝对路径存储在数据库中是一个非常糟糕的主意,因为对应用程序的任何更新都会导致应用程序存储在/private/var/mobile/Applications
内的其他文件夹中。在应用程序更新期间,将迁移任何文件,但数据库中对它们的任何引用都将不再有效。
因此,您必须始终将文件路径 relative 存储到其他逻辑目录中;例如 Documents 或 Caches 文件夹。
这可能意味着您应该将此路径存储为类中的相对目录,并且只在需要使用它时才解析为绝对路径。
最后存储临时文件引用可能是一个坏主意,因为我相信任何临时或缓存的文件都可以通过O / S从文件系统中删除。因此,您应该使用我上面提到的技术将这些文件存储在 Documents 文件夹中。
答案 1 :(得分:0)
您可以将文件保存在服务器上并将其物理路径存储在数据库中。我在过去建立了类似的应用程序,这就是我如何使用它。可能不是正确的方法,而只是一个想法。
答案 2 :(得分:0)
这是正常的吗?
那么,临时是什么意思?
当用户更新我的应用时,绝对路径会改变吗?
那么,临时是什么意思?
如果这是正常的,我应该只保留数据库中的相对路径吗?
用它做什么?
有一些最佳做法吗?
不要使用临时路径进行持久存储。那文件夹怎么样?