警告,我是一名设计师,在斯威夫特身边磕磕绊绊,所以提前道歉,因为我的无知。
我正在处理的应用程序将附带包含所有数据的JSON数据文件(以便无需连接即可访问该应用程序)。当应用程序运行时,我检查一个远程JSON文件,看看是否有任何数据更新。如果有新数据,那么我将使用较新的JSON文件覆盖本地文件。
我的问题与代码没有直接关系,而是与iOS文件系统有关。我知道我无法写入主包,那么我在哪里放置起始JSON文件以便我可以从Documents目录中访问它? 我理解如何使用代码和所有这些将新文件保存到Documents中,但我不知道如何将JSON文件放入Documents目录中开始。
正确方向上的一点很棒。
由于
答案 0 :(得分:2)
您将初始文件放入捆绑包并将其永久保留在那里。如果您下载了一个较新的文件,因为如果需要可以再次下载该文件,操作系统应该可以随时删除它,并且不应该备份该文件。因此,您将它放入缓存目录。如果你立即复制文件,Apple的评论员不喜欢它。
当应用程序启动时,您将检查缓存目录中是否有文件。如果它在那里,你使用它并检查其版本号。如果不存在,则从捆绑中获取文件。在任何一种情况下,您都要检查后台是否有更新的版本。
你不做的一件事是在你的包中复制文件。
答案 1 :(得分:1)
这可能对您有所帮助。通过使用此功能,您可以在应用程序数据中创建文件或从应用程序数据中获取文件。
var paths = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)[0] as! String
var dirPath = paths.stringByAppendingPathComponent("XYZ/")
var docPath = paths.stringByAppendingPathComponent("XYZ/xyz.json" )
println(docPath)
var checkImage = NSFileManager.defaultManager()
if (checkImage.fileExistsAtPath(docPath)) {
} else
{
checkImage.createDirectoryAtPath(dirPath, withIntermediateDirectories: true, attributes: nil, error: nil)
}
删除特定用途
checkImage.removeItemAtPath(imagePath, error: nil)