2016-08-22 7 views
-1

これをxcodeでコンパイルするときに問題があります。スイフトデータベースのFMDBエラーと説明

6行目:「let docsDir = dirPaths [0] as!String」は、「String型の強制的なキャストは同じ型にキャストしない」というエラーを返しません。 とは何ですか?ストリングは何ですか?それは私にそれを削除するように指示します。

2番目の質問は、stringByAppendingPathComponentがswiftによって削除されたようですが、スタック上のいくつかの質問を読んだあと、NSStringがそれと共に動作することを示しています。どのようにコードにNSStringの変更を実装するのですか?

最後に質問したいのは、このコードの少数しか得られないということです。クラスNSFileManagerの後に行う "defaultManager"や、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優しく投票してください。投票してください。いくつかのポイントを得るのを手伝ってください。ありがとう –

関連する問題