Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/image/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 如果我将使用Swift 3再次运行应用程序,则文档目录中不存在图像_Ios_Image_Swift3_Nsdocumentdirectory - Fatal编程技术网

Ios 如果我将使用Swift 3再次运行应用程序,则文档目录中不存在图像

Ios 如果我将使用Swift 3再次运行应用程序,则文档目录中不存在图像,ios,image,swift3,nsdocumentdirectory,Ios,Image,Swift3,Nsdocumentdirectory,我正在将相机图像保存到我的文档目录中。我正在我的util类中创建一个文档目录。以下是我的代码:- //Get Document Directory Path func getDirectoryPath() -> String { let paths = (NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)[0] as NSString).appendingPathComponent

我正在将相机图像保存到我的文档目录中。我正在我的util类中创建一个文档目录。以下是我的代码:-

//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)保存图像,并将路径(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目录获取,一旦成功,然后创建一个目录,然后存储它。让我知道确切的场景。下次运行时显示的路径值是多少。

每次从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/

其中
3F3093C6-2140-473B-8F99-A717AF162CDE
是由Xcode创建的,而不是您创建的
3F3093C6-2140-473B-8F99-A717AF162CDE

您确定第二次创建的图像路径与第一次相同吗?试着把它打印出来是的。图像显示在文档目录中。但无法显示。请将图像保存到documents/Phss目录。。。仅将图像名称存储到数据库。。。下次启动应用程序时,从数据库中获取图像名称,将其附加到documents/Phss目录中,然后加载图像。@DonMag Right only。事实上,我不知道为什么会发生这种情况,但我明白一件事是为了获取图像,我必须再次创建相同的路径,我的意思是我不能使用CreData DB相同的路径。