2016-08-23 13 views
0

私はSwiftとFMDBの初心者です。私はインターネットのリソースから以下のコードを入手し、コードを理解するために最善を尽くしました。私はそれが何をしていると思っているかを述べた文の下にコメントを書いた。疑問符のあるものは分かりません。スイフトFMDBコードの説明

class ViewController: UIViewController { 
@IBOutlet weak var name: UITextField! 
@IBOutlet weak var specialty: UITextField! 
//Defines name and specialty as contents of text fields 

var dbpath = String() 
//defines the database path 
func getPath(fileName: String) -> String { 

    let documentsURL = NSFileManager.defaultManager().URLsForDirectory(.DocumentDirectory, inDomains: .UserDomainMask)[0] 
    //finds document and returns an array of paths 
    let fileURL = documentsURL.URLByAppendingPathComponent(fileName) 
    print(fileName) 
    //finds path to fileName with URLByAppendingPathComponent 


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

    return fileURL.path! 
    //returns the fileURL in path format????? 
} 


//Button "Add Shop" definition 
override func viewDidLoad() { 
    super.viewDidLoad() 

    let dirPaths = 
    NSSearchPathForDirectoriesInDomains(.DocumentDirectory, 
     .UserDomainMask, true) 
    //creates search paths for directories, then ????? 

    let docsDir = dirPaths[0] 

    let dbPath: String = getPath("shopdata.db") 
    //assigns string "shopdata.db" to dbPath 
    let fileManager = NSFileManager.defaultManager() 
    //easier access for NSFileManager, returns shared file for the process when called 

    if !fileManager.fileExistsAtPath(dbPath as String) { 
     //if there is already a database, do the following 

     let contactDB = FMDatabase(path: dbPath as String) 
     //contact database with path identified in function getPath 

     if contactDB == nil { 
      print("Error: \(contactDB.lastErrorMessage())") 
      //If there is no database 
     } 

     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) 
       //executes a create table statement as defined above 
      { 
       print("Error: \(contactDB.lastErrorMessage())") 
       //if cannot execute statement, display error from fmdb 
      } 
      contactDB.close() 
       //close connection 
     } else { 
      print("Error: \(contactDB.lastErrorMessage())") 
      //if contact cannot be made, display error from fmdb 
     } 
    } 
} 

@IBAction func addShop(sender: AnyObject) { 
} 

override func didReceiveMemoryWarning() { 
    super.didReceiveMemoryWarning() 
    // Dispose of any resources that can be recreated. 
} 


} 

答えて

0

この関数は、DocumentDirectoryから与えられたfileNameのファイルパスを取得して返します。

func getPath(fileName: String) -> String { 

let documentsURL = NSFileManager.defaultManager().URLsForDirectory(.DocumentDirectory, inDomains: .UserDomainMask)[0] 
//finds document and returns an array of paths 
let fileURL = documentsURL.URLByAppendingPathComponent(fileName) 
print(fileName) 
//finds path to fileName with URLByAppendingPathComponent 


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

return fileURL.path! 
//returns the fileURL in path format????? 
} 

これらのコード行は一切必要ありません。このコードは、アプリケーションのDocumentDirectoryからファイルパスを取得します。これはgetPath:関数で行われます。

let dirPaths = 
    NSSearchPathForDirectoriesInDomains(.DocumentDirectory, 
     .UserDomainMask, true) 
    //creates search paths for directories, then ????? 

    let docsDir = dirPaths[0] 

DocumentDirectoryは、アプリケーションがデータベースを保存する場所です。 悪い英語を申し訳ありません。希望がそれを助ける:)