2017-07-06 66 views
0

我正在将照相机图像保存到我的文档目录中。我在我的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的存储在我的核心数据,来获取图像数据库然后它没有给这个文件存在这条路径。

图像存在于相同的路径但显示不存在。我不知道为什么会发生这种情况。

+0

是哟你确定在第二次,你的图像路径是第一次相同?尝试打印出来 –

+0

是的。 图像存在于文档目录中。 但无法显示。 – kishor0011

+1

将图像保存到文档/ Phss目录中...仅将图像*名称*存储到数据库中...下次启动应用程序时,从数据库中获取图像*名称*,并将其附加到文档/ Phss目录,加载图像。 – DonMag

回答

0
let paths = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)[0] as String 
let url = URL(fileURLWithPath: paths).appendingPathComponent("fileName") 

你可以试试上面的代码片段。这个不会创建一个目录,我建议先尝试从Documents目录直接获取,然后创建一个目录然后存储它。让我知道确切的场景。下次运行时显示的路径的值是多少?

+0

其实我不知道为什么会发生这种情况,但我理解一件事是为了获取图像,我必须再次创建相同的路径,我的意思是我不能使用CreData DB相同的路径。 – kishor0011

0

每当您从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不是你

相关问题