Swift数据库FMDB错误和解释



我在xcode上编译这个有一些麻烦。

第6行:" let docsDir = dirPaths[0] as! "String"返回错误"将'String'强制转换为相同类型无效"。什么是as!字符串在干什么?因为它告诉我要删除它

第二个问题是第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())")
        }
    }

尝试使用此代码文件

的路径
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
}

希望有帮助:)(抱歉我的英语不好)

最新更新