这真的很奇怪也很奇怪。我尝试了所有选项,但是当我尝试通过文件的绝对或相对路径获取nil
时,仍然得到NSImage
。
我接下来尝试过:
let desctopImagePath = NSWorkspace.shared.desktopImageURL(for: mainScreen)?.relativePath.removingPercentEncoding
let desctopImage = try NSImage(byReferencingFile: desctopImagePath)
或
NSImage(byReferencing: URL(fileURLWithPath: desctopImagePath))
NSImage(contentsOf: URL(fileURLWithPath: desctopImagePath))
NSImage(contentsOfFile: desctopImagePath)
NSImage(contentsOf: URL(string: desctopImagePath))
从每种情况下我得到nil
。路径正确。我试图通过Finder
和Command + Shift + G
来找到它-可以。
这是怎么回事,是什么问题?
答案 0 :(得分:0)
请不要使用relativePath
和removingPercentEncoding
。只要有可能,就使用与URL相关的API。
有两种情况
如果您使用一张固定图像desktopImageURL(for
,则返回图像URL
if let mainScreen = NSScreen.main,
let desktopImageFolderURL = NSWorkspace.shared.desktopImageURL(for: mainScreen) {
let image = NSImage(contentsOf: desktopImageFolderURL)
}
如果使用的是Change Picture
选项,则desktopImageURL(for
返回包含所用图像别名文件的目录的URL。您必须将文件保存在文件夹中
if let mainScreen = NSScreen.main,
let desktopImageFolderURL = NSWorkspace.shared.desktopImageURL(for: mainScreen) {
do {
let desktopImageURLs = try FileManager.default.contentsOfDirectory(at: desktopImageFolderURL, includingPropertiesForKeys: nil, options: [.skipsHiddenFiles, .skipsSubdirectoryDescendants])
if let firstImage = desktopImageURLs.first {
let image = NSImage(contentsOf: firstImage)
}
} catch { print(error) }
}