Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.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
Swift Sqlite数据库错误:FMDatabase未打开。_Swift_Fmdb - Fatal编程技术网

Swift Sqlite数据库错误:FMDatabase未打开。

Swift Sqlite数据库错误:FMDatabase未打开。,swift,fmdb,Swift,Fmdb,我收到这个错误,FMB数据库没有打开。即使在执行查询之前先打开数据库。这是我用来打开数据库的数据库实例的代码 var instance = ModelManager() class ModelManager: NSObject { var database: FMDatabase? = nil var database2: FMDatabase? = nil var resultSet: FMResultSet! class func getInstance(sqllite:String)

我收到这个错误,FMB数据库没有打开。即使在执行查询之前先打开数据库。这是我用来打开数据库的数据库实例的代码

var instance = ModelManager()

class ModelManager: NSObject {

var database: FMDatabase? = nil
var database2: FMDatabase? = nil
var resultSet: FMResultSet!

class func getInstance(sqllite:String) -> ModelManager {
    if(instance.database == nil){
        instance.database = FMDatabase(path: Util.getPath(sqllite))
    }
    return instance
}
class func getInstance2(sqllite:String) -> ModelManager {
    if(instance.database2 == nil){
        instance.database2 = FMDatabase(path: Util.getPath(sqllite))
    }
    return instance
}
}

这是我得到错误的代码

   func saveImageAudio(audioFile:String?,imageFile:String?,isImage:Bool){

    guard (instance.database?.open())! else {
        return
    }

    let fileName = isImage == true ? imageFile : audioFile
    var paramName = isImage == true ? "imageList" : "audioList"
    let countParam = isImage == true ? "imageCount" : "audioCount"
    let time = Util.DateTime()

    guard increaseLastNo(isImage: isImage) else {
        return
    }

    do {

        let FileArray = getImageAudiolist(isImagelist: isImage)

        var query = ""
        var values:[Any] = []

        if FileArray.count == 0 {
            query = "update RoomSectionDetails set \(paramName) = ?, \(countParam) = 1 ,modified_dtm = ? where  pda_guid = ? and roomName = ? and sectionID = ? and dead = ?"
            values = [fileName!,time,pda_guid,roomName,sectionId,0]
        }else{
            query = "update RoomSectionDetails set \(paramName) = \(paramName) || ?, \(countParam) = \(countParam) + 1, modified_dtm = ? where  pda_guid = ? and roomName = ? and sectionID = ? and dead = ?"
            values = [",\(fileName!)",time,pda_guid,roomName,sectionId,0]
        }

        try instance.database?.executeUpdate(query, values: values)

        paramName = isImage == true ? "lastImageNo" : "lastAudioNo"

        if !isImage {
            self.updateAudioDuration()
        }
    } catch  {
        print("Error while Saving Image Audio in DB")
    }
     instance.database?.close()
   }

请给出这个问题的解决方案。在触发查询后,我从未关闭过数据库。这导致cpu使用量超过200。所以现在我要关闭数据库。但我得到了这个错误。谢谢你的帮助。

我找到了这个问题的解决方案。我在关闭数据库的方法中有一个方法。因为那个错误即将发生。谢谢您的帮助。

在调用saveImageAudio之前,您是否在代码中的某个地方调用了getInstance或getInstance2?我强烈建议将数据库和database2声明为惰性变量,而不是实现getInstance和getInstance2是的,Ahmad F。我在应用程序中调用了deletgate。但声明惰性并不能解决此错误的问题。我已经试过了。