2017-09-07 40 views
0

我想用FMDB打开现有的数据库。数据库应该是一个sqlite数据库,其结尾为.db使用FMDB在Swift中打开数据库

我的代码是: 静态设共享:DBManager = DBManager()

let databaseFileName = "/mydb.db" 

var pathToDatabase: String! 

var pathNSURL: NSURL! 

var database: FMDatabase! 


override init() { 
    super.init() 

    let documentsDirectory = (NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)[0] as NSString) as String 

    let zwerg = documentsDirectory + databaseFileName 

    let pathNSURL = NSURL(fileURLWithPath: zwerg) 

    let pathString = documentsDirectory + databaseFileName 

    pathToDatabase = pathNSURL.path 
    print(pathToDatabase) 
} 


func firstQuestion() -> Bool { 
    if openDatabase(){ 
     let query = "SELECT * FROM movie" 

     do { 
      let result = try database.executeQuery(query, values: nil) 
      print(result) 
     } 
     catch { 
      print(error.localizedDescription) 
     } 
     database.close() 
     return true 
    } 
    return false 
} 

func openDatabase() -> Bool { 
    if database == nil { 
     print(FileManager.default.fileExists(atPath: pathToDatabase)) 
     if FileManager.default.fileExists(atPath: pathToDatabase) { 
      print("Database set new path -> File exists") 
      database = FMDatabase(path: pathToDatabase) 
     } 
    } 

    if database != nil { 
     print("Database != nil") 
     if database.open() { 
      print("Database is open in != nil") 
      return true 
     } 
    } 

    return false 
} 

林从VC调用方法firstQuestion():

override func viewDidLoad() { 
    super.viewDidLoad() 
    // Do any additional setup after loading the view, typically from a nib. 

    print(DBManager.shared.firstQuestion()) 
} 

我的问题是,fileExists-方法总是返回false。该文件名是正确的。这是我的第一个快速的数据库项目,所以也许我犯了一个愚蠢的错误......任何建议?

感谢您的帮助!

回答

0
let fileManager = FileManager.default 
let docURL = fileManager.urls(for: .documentDirectory, in: .userDomainMask).first! 

let databaseURL = docURL.appendingPathComponent("databaseNaeme.db") 

和初始化数据库:

database = FMDatabase(path: databaseURL.absoluteString) 
+0

这是路径:文件:///用户/ OverBurned /库/开发商/ CoreSimulator /设备/ B5EAE004-A036-4BD5-A692-C25EF3875D25/data/Containers/Data/Application/3BC1CBA7-48E1-4A17-A456-108667E7F773/Documents/mydb.db但它不是解决方案感谢您的第二个解决方案 – OverBurned

+0

我收到此错误消息:致命错误:意外地发现零解包an可选值 – OverBurned

+0

尝试更新,它适用于我 – Alex