我将Xcode升级到版本11.0(11A420a),部分代码无法像以前那样工作。我要将文件夹从Bundle复制到TemporaryDirectory。
func makeHtmlFile (type: InvoiceType?) -> URL {
let identifier = Bundle.main.bundleIdentifier!
let cacheDirectory = NSTemporaryDirectory() + "\(identifier)/Website/"
let cacheURL = URL(fileURLWithPath: cacheDirectory )
let websiteUrl = URL(fileReferenceLiteralResourceName: "Website")
do {
try FileManager().copyItem(at: websiteUrl, to: cacheURL)
} catch let error {
print ("Copy \(error)\n\tWebsite: \(websiteUrl)\n\tCache:\(cacheURL)")
}
...
}
在Xcode 10中,这部分代码可以在包中找到文件夹/Website
,在temporary directory
中找到/var/folders/....
,但是升级后会显示错误:
Copy Error Domain=NSCocoaErrorDomain Code=4 "The file “Website” doesn’t exist."
存在错误消息中显示的路径,我可以通过从错误消息中复制它们并将其粘贴到Finder -> Go -> Go to Folder
中去到那里。有人知道升级后发生了什么变化吗?
答案 0 :(得分:0)
好的,我至少为自己解决了问题。我没有使用NSTemporaryDirectory()
来访问临时文件的URL,而是使用FileManager().temporaryDirectory
和
let tempDirectory = FileManager().temporaryDirectory
if let websiteURL = Bundle.main.url(forResource: "Website", withExtension: nil) {
let cacheURL = tempDirectory.appendingPathComponent(websiteURL.lastPathComponent, isDirectory: true)
...
}
似乎可以像升级前一样工作。