Как сохранить и получить изображение, используя каталог документов и sqlite? - PullRequest
0 голосов
/ 12 марта 2019

Каждый раз, когда я пытаюсь получить изображение, оно просто говорит, что файл не существует.Я сохранил имя файла в своей базе данных и пытаюсь получить изображение таким образом.Я не уверен, является ли сохранение его через каталог документов правильным способом, но не знаете другого способа сделать это?

func getImage(){
    var db: OpaquePointer?
    var statement: OpaquePointer?

    let fileManager = FileManager.default

    let fileUrl = try! FileManager.default.url(for: .documentDirectory, in: .userDomainMask, appropriateFor: nil, create: false)
        .appendingPathComponent("RateappDatabase10.sqlite")

    if sqlite3_open(fileUrl.path, &db) != SQLITE_OK {
        print("error opening database")
        return


    } else {
        print("database open VC4")

    }
    if sqlite3_prepare_v2(db, "select PostID, Post from Post", -1, &statement, nil) != SQLITE_OK {
        let errmsg = String(cString: sqlite3_errmsg(db)!)
        print("error preparing select: \(errmsg)")
    }
    while sqlite3_step(statement) == SQLITE_ROW {
        let PostID = sqlite3_column_int(statement, 0)
        print("PostID = \(PostID); ", terminator: "")

        if let cString = sqlite3_column_text(statement, 1) {
            let Post = String(cString: cString)
            if (PostID == 2){
                print(PostID, Post)
                let imageName = Post
                let imagePath = (NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)[0] as NSString).appendingPathComponent(imageName)

                print(imagePath)

                if fileManager.fileExists(atPath: imagePath){
                    DisplayImagePost.image = UIImage(contentsOfFile: imagePath)
                }else{
                    print("Panic! No Image!")
                }

                sqlite3_reset(statement)

                if sqlite3_finalize(statement) != SQLITE_OK {
                    let errmsg = String(cString: sqlite3_errmsg(db)!)
                    print("error finalizing prepared statement: \(errmsg)")

                }
                statement = nil

            }
        }
    }
    if sqlite3_close(db) != SQLITE_OK {
        print("error closing database")
    }else{
        print("database closed")
    }

    db = nil
}

func saveImage(imageName: String){
    //create an instance of the FileManager
    let fileManager = FileManager.default

    //get the image path

    let imagePath = (NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)[0] as NSString).appendingPathComponent(imageName)

    print(imagePath)
    //get the image we took with camera

    let image = ImageView2.image!

    //get the PNG data for this image
    let data = image.pngData()
...