2016-08-22 66 views
-1

我在編譯xcode時遇到了一些麻煩。Swift數據庫FMDB錯誤和解釋

第6行:「let docsDir = dirPaths [0] as!String」返回錯誤「強制轉換爲'String'爲相同類型不起作用。」 什麼是!串做?因爲它告訴我要刪除它。

第二個問題是第8行,其中stringByAppendingPathComponent似乎已被swift刪除,但在閱讀堆棧上的一些問題後,它顯示NSString與它一起工作。我將如何實現對代碼的NSString更改?

我想問的最後一個問題是我沒有得到少數代碼,是否有任何我可以學習的東西,比如什麼是「defaultManager」,在類NSFileManager之後或者只是第2行和第3行一般。

let filemgr = NSFileManager.defaultManager() 
    let dirPaths = 
    NSSearchPathForDirectoriesInDomains(.DocumentDirectory, 
     .UserDomainMask, true) 

    let docsDir = dirPaths[0] as! String 

    let databasePath = docsDir.stringByAppendingPathComponent(
     "shopdata.db") 

    if !filemgr.fileExistsAtPath(databasePath as String) { 

     let contactDB = FMDatabase(path: databasePath as String) 

     if contactDB == nil { 
      print("Error: \(contactDB.lastErrorMessage())") 
     } 

     if contactDB.open() { 
      let sql_stmt = "CREATE TABLE IF NOT EXISTS CONTACTS (ID INTEGER PRIMARY KEY AUTOINCREMENT, SPECIALTY TEXT, NAME TEXT)" 
      if !contactDB.executeStatements(sql_stmt) { 
       print("Error: \(contactDB.lastErrorMessage())") 
      } 
      contactDB.close() 
     } else { 
      print("Error: \(contactDB.lastErrorMessage())") 
     } 
    } 

回答

0

嘗試使用此代碼文件的路徑

func getPath(fileName: String) -> String { 

     let documentsURL = NSFileManager.defaultManager().URLsForDirectory(.DocumentDirectory, inDomains: .UserDomainMask)[0] 
     let fileURL = documentsURL.URLByAppendingPathComponent(fileName) 


     print("File Path Is : \(fileURL)") 

     return fileURL.path! 
    } 

然後調用這樣

let dbPath: String = getPath("shopdata.db") 
     let fileManager = NSFileManager.defaultManager() 
     if !fileManager.fileExistsAtPath(dbPath) { 

     // Your remaining Code here 
} 

希望它能幫助:)此功能(對不起,我英文不好)

+0

@Roger Ho親切地投票吧。幫助我獲得一些積分。謝謝 –