Swift 数据库 FMDB 错误和解释
Swift Database FMDB Error and Explanation
我在 xcode 上编译时遇到一些问题。
第 6 行:“let docsDir = dirPaths[0] as!String”returns "Forced Cast of 'String' to the same type has no effect." 的错误
什么像!字符串干什么?因为它告诉我删除它。
第二个问题是第 8 行,其中 stringByAppendingPathComponent 似乎已被 swift 删除,但在阅读堆栈上的一些问题后,它表明 NSString 可以使用它。我将如何实现对代码的 NSString 更改?
我想问的最后一个问题是我没有得到这段代码的少数,是否有任何地方我可以学习诸如 "defaultManager" 在 class 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
}
希望对您有所帮助:)(抱歉英语不好)
我在 xcode 上编译时遇到一些问题。
第 6 行:“let docsDir = dirPaths[0] as!String”returns "Forced Cast of 'String' to the same type has no effect." 的错误 什么像!字符串干什么?因为它告诉我删除它。
第二个问题是第 8 行,其中 stringByAppendingPathComponent 似乎已被 swift 删除,但在阅读堆栈上的一些问题后,它表明 NSString 可以使用它。我将如何实现对代码的 NSString 更改?
我想问的最后一个问题是我没有得到这段代码的少数,是否有任何地方我可以学习诸如 "defaultManager" 在 class 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
}
希望对您有所帮助:)(抱歉英语不好)