如果我将使用Swift再次运行应用程序,图像不存在于文档目录中3
我正在将照相机图像保存到我的文档目录中。我在我的util类中创建一个文档目录。这下面是我的代码: -如果我将使用Swift再次运行应用程序,图像不存在于文档目录中3
//Get Document Directory Path
func getDirectoryPath() -> String {
let paths = (NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)[0] as NSString).appendingPathComponent("Phss")
return paths
}
//Create Directory
func createDirectory(){
let fileManager = FileManager.default
let paths = (NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)[0] as NSString).appendingPathComponent("Phss")
if !fileManager.fileExists(atPath: paths){
try! fileManager.createDirectory(atPath: paths, withIntermediateDirectories: true, attributes: nil)
}
else{
Helper.sharedInstance.Print("Already dictionary created." as AnyObject)
}
}
之后,我的名字和一些值(docAddedTime)保存影像,并储存在我的核心数据DB的路径(的ImagePath)。
func saveImageDocumentDirectory(imageData : Data, docName : String) -> String {
let fileManager = FileManager.default
let imagePAth = (getDirectoryPath() as NSString).appendingPathComponent("\(String(describing: docAddedTime!) + "_" + "\(String(describing: docName))").png")
fileManager.createFile(atPath: imagePAth, contents: imageData, attributes: nil)
return imagePAth
}.
我正在保存在我的本地核心数据库中的图像路径获取图像。
let fileManager = FileManager.default
let imagePAth = doc!.docPath! //Core Data DB Path of image
if fileManager.fileExists(atPath: imagePAth) {
imgView.image = UIImage(contentsOfFile: imagePAth
}
的问题是第一次我能够获取图像,并显示在我的ImageView,但在那之后我会再次运行该应用程序,我想通过这个ImagePath的存储在我的核心数据,来获取图像数据库然后它没有给这个文件存在这条路径。
图像存在于相同的路径但显示不存在。我不知道为什么会发生这种情况。
let paths = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)[0] as String
let url = URL(fileURLWithPath: paths).appendingPathComponent("fileName")
你可以试试上面的代码片段。这个不会创建一个目录,我建议先尝试从Documents目录直接获取,然后创建一个目录然后存储它。让我知道确切的场景。下次运行时显示的路径的值是多少?
其实我不知道为什么会发生这种情况,但我理解一件事是为了获取图像,我必须再次创建相同的路径,我的意思是我不能使用CreData DB相同的路径。 – kishor0011
每当您从Xcode构建应用程序时,都会创建新文件夹,并且文件将位于新文件夹中。
不要重建应用程序只需从模拟器关闭应用程序,并从模拟器本身再次启动应用程序。
文件的完整路径将是这样的:
file:///Users/username/Library/Developer/CoreSimulator/Devices/4FA96815-521B-4D84-B5C7-10697DE1908B/data/Containers/Data/Application/54CC678C-7E96-4DB6-83CC-6ECB506DC9BF/Documents/tmp.png
在未来建设:
Application/54CC678C-7E96-4DB6-83CC-6ECB506DC9BF/Documents/
将改变为:
Application/3F3093C6-2140-473B-8F99-A717AF162CDE/Documents/
,其中,通过Xcode中创建3F3093C6-2140-473B-8F99-A717AF162CDE
不是你
是哟你确定在第二次,你的图像路径是第一次相同?尝试打印出来 –
是的。 图像存在于文档目录中。 但无法显示。 – kishor0011
将图像保存到文档/ Phss目录中...仅将图像*名称*存储到数据库中...下次启动应用程序时,从数据库中获取图像*名称*,并将其附加到文档/ Phss目录,加载图像。 – DonMag