gpt4 book ai didi

swift - 每次重启 Swift iOS 都会更改文件目录

转载 作者:行者123 更新时间:2023-11-30 10:29:57 25 4
gpt4 key购买 nike

我当前正在保存用户从照片库中选择的图像,并将 URL 保存到用户默认值。

我当前面临的问题是每当我的应用程序重新启动(例如 Xcode 重新启动)时,我保存到用户默认值的 URL 就不再有效。根据我的理解/研究,我需要保存图像的相对 URL;但是我没有运气正确地做到这一点。模拟器和实际设备都会发生这种情况。

从我的 UIImagePicker 中,这是我的步骤:

 func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]) {

guard let image = info[.originalImage] as? UIImage else { return }

let savingImage : SavingImage = SavingImage()

let ourStringedUrl : String = savingImage.saveImageDocumentDirectory(image: image, imageName: image.description)

}

来自SavingImage,这里是照片本身的保存

func getDirectoryPath() -> NSURL {
let path = (NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)[0] as NSString).appendingPathComponent("AllImages")
let url = NSURL(string: path)
return url!
}


func saveImageDocumentDirectory(image: UIImage, imageName: String) -> String {
let fileManager = FileManager.default
let path = (NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)[0] as NSString).appendingPathComponent("AllImages")

if !fileManager.fileExists(atPath: path) {
try! fileManager.createDirectory(atPath: path, withIntermediateDirectories: true, attributes: nil)
}

let url = NSURL(string: path)
let imagePath = url!.appendingPathComponent(imageName)
let urlString: String = imagePath!.absoluteString
let imageData = image.jpegData(compressionQuality: 1)
fileManager.createFile(atPath: urlString as String, contents: imageData, attributes: nil)

return urlString as String

}

& 最后,这是我加载图像本身的方式:

 func getImageFromDocumentDirectory(imageName : String) -> UIImage {
let fileManager = FileManager.default
var ourImage : UIImage!
let imagePath = "\(imageName)"
let urlString: String = imagePath



if fileManager.fileExists(atPath: urlString) {
ourImage = UIImage(contentsOfFile: urlString)

} else {

if ourImage == nil {
ourImage = UIImage(named: "defaultImage.png")
}

}

return ourImage

}

加载方面我哪里出了问题?我到底应该如何保存 URL?

正在保存的 URL 看起来类似于以下内容:

//var/mobile/Containers/Data/Application/17C16D0D-1BFA-44F5-A6BD-18DFAEA051E0/Documents/AllImages/%3CUIImage:0x280a393b0%20anonymous%20%7B3024,%204032%7D%3E

但是在重新启动时加载图像时将显示为 nil。

最佳答案

每次重新启动模拟器或每次将新版本安装到设备时都会创建新目录。 (卸载旧版本并安装新版本)。 iOS 没有给我们选择目录的权限。当您安装新应用程序时,它将创建其沙箱。请确保在同一版本上检查您的目录。

关于swift - 每次重启 Swift iOS 都会更改文件目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59350129/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com