2017-09-07 15 views
0

FMDB으로 기존 데이터베이스를 열고 싶습니다. DB는 sqlite이고 끝 문자는 .db입니다.Swift에서 FMDB가있는 DB 열기

내 코드는 다음과 같습니다 정적하자 공유 : DBManager = DBManager()는 VC에서 방법 firstQuestion()를 호출

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 
} 

임 :

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

이 경로이었다 : 파일 : /// 사용자/오버 버닝/라이브러리/개발자/CoreSimulator/디바이스/B5EAE004-A036-4BD5-A692-C25EF3875D25/data/Containers/Data/Application/3BC1CBA7-48E1-4A17-A456-108667E7F773/Documents/mydb.db 그러나 해결책이 아니 었습니다. 어쨌든 – OverBurned

+0

두 번째 해결 방법으로이 오류 메시지가 나타납니다 : 치명적인 오류 : 옵션 값 – OverBurned

+0

업데이트를 시도해보십시오. 저에게 맞습니다. – Alex