數據存儲:數據持久化

數據持久化方式:

NSUserDefault:

var userDefaults =NSUserDefaults.standardUserDefaults()

userDefaults.setObject(text, forKey:"inputTextField")

var text = userDefaults.stringForKey("inputTextField")


//將字典的值註冊到NSUserDefault

userDefaults.registerDefaults(defaultToRegisteras [NSObject :AnyObject])

Setting Bundle:

新建Setting Bundle 文件

var settingBundle =NSBundle.mainBundle().pathForResource("Settings", ofType:"bundle")!


var root =NSDictionary(contentsOfFile: settingBundle.stringByAppendingPathComponent("Root.plist"))

            

var preferences = root!.objectForKey("PreferenceSpecifiers")as! Array<NSDictionary>

            

var defaultToRegister =NSMutableDictionary(capacity: root!.count)

            

for preferencein preferences {

                

   var value = preference.objectForKey("Identifier")as? String

                

   if let value = value {

                    

       defaultToRegister.setValue(preference.objectForKey("Default Value"), forKey: value)

    }

 }


通用文件存儲

//獲取文件路徑   

func getFilePath(#fileName:String)->String{

        var path =NSSearchPathForDirectoriesInDomains(NSSearchPathDirectory.DocumentDirectory,NSSearchPathDomainMask.UserDomainMask,true)

       var documentDirectory = path[0]as! String

       return documentDirectory.stringByAppendingPathComponent(fileName)

    }


//存儲數據

var text =textField.text

var txtFilePath =getFilePath(fileName: "data.txt")

text.writeToFile(txtFilePath, atomically:true, encoding: NSUTF8StringEncoding, error:nil)


//讀取數據

var txtFilePath =getFilePath(fileName: "data.txt")

if NSFileManager.defaultManager().fileExistsAtPath(txtFilePath){

   var text = String(contentsOfFile: txtFilePath, encoding:NSUTF8StringEncoding, error: nil)

   textField.text = text    

}


對象歸檔:

//存儲數據

var txtFilePath = getFilePath(fileName: "data2.txt")

var person = Person()

person.name = text

var data = NSKeyedArchiver.archivedDataWithRootObject(person)

data.writeToFile(txtFilePath, atomically: true)


//讀取數據

var txtFilePath = getFilePath(fileName: "data2.txt")

var person = NSKeyedUnarchiver.unarchiveObjectWithFile(txtFilePath) asPerson

textField.text = person.name


SQLite:

//加載數據庫

        var sqliteFilePath = getFilePath(fileName: "database")

        var manager = NSFileManager.defaultManager()

        if manager.fileExistsAtPath(sqliteFilePath){

            println("數據庫已經存在!")

        }else{

            println("數據庫不存在,正在創建。。。。。")

        }

        var database:COpaquePointer = nil

        var createDatabaseResult = sqlite3_open(sqliteFilePath, &database)

        if createDatabaseResult == SQLITE_OK{

            println("數據庫創建成功!")

            println("開始創建textfield表!")

            var createSQL = "CREATE TABLE IF NOT EXISTS TEXTFIELD(ID INTEGER PRIMARY KEY AUTOINCREMENT,TEXT TEXT)"

            var errorMessage :UnsafeMutablePointer<Int8> = nil

            var createTableResult = sqlite3_exec(database, createSQL, nil, nil, &errorMessage)

            if createTableResult == SQLITE_OK{

                println("表格創建成功")

            }else{

                println("表格創建失敗,錯誤原因:\(errorMessage)")

            }

        }

        sqlite3_close(database)

        println("數據操作完畢 關閉數據庫")


//讀取數據

        var text = ""

        var database:COpaquePointer = nil

        var savedData:COpaquePointer = nil

        var sqliteFilePath = getFilePath(fileName: "database")

        var createDatabaseResult = sqlite3_open(sqliteFilePath, &database)

        if createDatabaseResult == SQLITE_OK{

            var selectSQL = "SELECT ID,TEXT FROM TEXTFIELD"

            var selectDataResult = sqlite3_prepare_v2(database, selectSQL, -1, &savedData, nil)

            while sqlite3_step(savedData) == SQLITE_ROW {

                var ID = sqlite3_column_int(savedData, 0)

                var textField = String.fromCString(UnsafePointer(sqlite3_column_text(savedData, 1)))

                text += "ID\(ID):\(textField!)"

            }

            sqlite3_finalize(savedData)

            sqlite3_close(database)

        }




Core DataiCloud
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章