我希望将图片保存到iPhone的用户域,以便编写以下代码。
DataGrid
它显示为:SortKeepingDataGrid
在这种情况下,应用程序ID为let path = NSSearchPathForDirectoriesInDomains(NSSearchPathDirectory.DocumentDirectory, NSSearchPathDomainMask.UserDomainMask, true)[0]
print(path)
问题是当我再次在模拟器上运行而没有移除APP时,它显示为:/Users/xxx/Library/Developer/CoreSimulator/Devices/1312F880-6BDC-45D2-B3B3-4D2374313C67/data/Containers/Data/Application/A2850237-5E71-4373-81A6-B443032E1951/Documents/
在这种情况下,应用程序ID为A2850237-5E71-4373-81A6-B443032E1951
因此,虽然我刚刚更新了应用并且没有删除该应用,但是之前和当前安装之间存在应用ID差异。为什么会引起它以及如何解决它?
它导致Xcode 7.2,7.1,7.0。它不仅会导致模拟器安装,还会导致实际的设备安装。因此,如果iOS用户从应用商店更新应用,则应用程序ID将被更改,应用程序沙箱也将被更改,最终用户无法引用他们的图像。
类似情况:
相关指南:
提前致谢。
似乎我必须坚持路径作为亲戚而非绝对。
我会尝试这种方法,如果我解决了问题,我会更新问题。
答案 0 :(得分:2)
我必须坚持路径相对而非绝对。我还可以通过NSSearchPathForDirectoriesInDomains(NSSearchPathDirectory.DocumentDirectory, NSSearchPathDomainMask.UserDomainMask, true)[0] + "persisted relative path"
获取来抢救旧的运行图像。
答案 1 :(得分:1)
书签是一个不透明的数据结构,包含在NSData对象中, 描述文件的位置。而路径和文件 在您的应用启动之间,参考网址可能很脆弱 书签通常可用于重新创建文件的URL,即使在 移动或重命名文件的情况
首先,您必须使用NSURL而不是String
将NSURL转换为NSData
let data: NSData? = try? url.bookmarkDataWithOptions(.SuitableForBookmarkFile, includingResourceValuesForKeys: nil, relativeToURL: nil)
从书签NSData
中读取NSURL var isStale: ObjCBool = false
let url = try? NSURL(
byResolvingBookmarkData: bookData,
options: [],
relativeToURL: nil,
bookmarkDataIsStale: &isStale)
guard let fullURL = url else {
return nil
}
您可以将relativeToURL
填入您的文档目录网址
或者,您可以使用FileKit:path.bookmarkData
和Path(bookmarkData: ..)
答案 2 :(得分:-1)
尝试使用name.extension
来保留您的文件保存文件
let pathDocument = NSSearchPathForDirectoriesInDomains(NSSearchPathDirectory.DocumentDirectory, NSSearchPathDomainMask.UserDomainMask, true)[0]
let fullPath = let fullPath = pathDocument+"/"+"fileName.ext"
//...add some code to save document at `fullPath`...
获取文件
let pathDocument = NSSearchPathForDirectoriesInDomains(NSSearchPathDirectory.DocumentDirectory, NSSearchPathDomainMask.UserDomainMask, true)[0]
let fullPath = let fullPath = pathDocument+"/"+"fileName.ext"
//... add code to get data at path : `fullPath`....