我正在将收到的推送通知中的图像保存到磁盘。起初,我尝试使用通常在整个应用程序中使用的静态函数,但无法从通知的NotificationService.swift
中引用它延期。所以我将函数复制到文件中以使用它,但是Xcode陷入了错误循环。不管我声明data
都会引发错误。如果从错误'jpegData(compressionQuality:)' has been renamed to 'UIImageJPEGRepresentation(_:_:)'
执行更正,则会引发错误'UIImageJPEGRepresentation' has been replaced by instance method 'UIImage.jpegData(compressionQuality:)'
,您能看到这里发生了什么吗?这是功能:
func saveImage(imageName: String, image: UIImage) {
guard let documentsDirectory = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first else { return }
let fileName = imageName
let fileURL = documentsDirectory.appendingPathComponent(fileName)
guard let data = UIImageJPEGRepresentation(image, 1) else { return }
guard let data2 = image.jpegData(compressionQuality: 0.75) else {return}
guard let data3 = image.UIImageJPEGRepresentation(compressionQuality: 1) else {return}
//
//Checks if file exists, removes it if so.
if FileManager.default.fileExists(atPath: fileURL.path) {
do {
try FileManager.default.removeItem(atPath: fileURL.path)
print("Removed old image")
} catch let removeError {
print("couldn't remove file at path", removeError)
}
}
do {
try data.write(to: fileURL)
} catch let error {
print("error saving file with error", error)
}
}
此外,为什么我不能将原始静态函数引用为Functions.saveImage
?
一如既往的感谢。
错误循环:
答案 0 :(得分:1)
发现了问题。我有使用Swift 4.2和应用程序Swift 4.0的NotifiationService。我昨天检查时一定不小心设置了它。 再次感谢大家,确实是个愚蠢的问题,但是嘿..我们现在知道这种循环错误指向模块中设置的不同Swift版本。这里学到的教训.. 欢呼声
答案 1 :(得分:0)
如果您使用的是Swift 4.2+,请尝试仅使用
guard let data = image.jpegData(compressionQuality: 0.75) else {
return
}
否则,如果您使用的是Swift 4.0,请尝试仅使用
guard let imageData = UIImageJPEGRepresentation(image, 0.8) else {
return
}
别忘了重新编译代码。