美文网首页
Swift数据存储

Swift数据存储

作者: 952625a28d0d | 来源:发表于2016-07-22 00:38 被阅读74次
    • 创建文件路径
    //MARK:获取沙盒路径
        func documentsDirectory() -> String{
            let paths = NSSearchPathForDirectoriesInDomains(NSSearchPathDirectory.DocumentationDirectory, NSSearchPathDomainMask.UserDomainMask, true)
            let documentDictionary:String = paths.first! as String
            return documentDictionary
        }
        
        //MARK:获取文件地址
        func dataFilePath() -> String{
            return documentsDirectory().stringByAppendingString("CheckList.plist")
        }```
    
    - 对我们的数据模型进行编码解码 
    
    ```swift
     //MARK: 从Object解析出来
        init(coder aDecoder:NSCoder!){
            self.text = aDecoder.decodeObjectForKey("text") as! String
            self.checked = aDecoder.decodeObjectForKey("checked") as! Bool
        }
        
        //MARK: 编码成Object
        func encodeWithCoder(aCoder:NSCoder!) {
            aCoder.encodeObject(text, forKey: "text")
            aCoder.encodeObject(checked, forKey: "checked")
        }```
    
    - 保存我们的数据
    
    ```swift
        func saveCheckListItems(){
            let data = NSMutableData()
            let archiver = NSKeyedArchiver(forWritingWithMutableData:data)
            archiver.encodeObject(arrData, forKey: "CheckItemList")
            archiver.finishEncoding()
            data.writeToFile(dataFilePath(), atomically: true)
        }```
    
    ![Paste_Image.png](https://img.haomeiwen.com/i189984/c1007e64cd3f69e9.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
    
    去文件夹中查看数据
    
    ![Paste_Image.png](https://img.haomeiwen.com/i189984/b3785c98ec13a4d4.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
    
    - 在数据发生变的时候存储数据
    
    ```swift
    func addItem(item: MainItem) {
            let index = arrData.count
                arrData.append(item)
            let indexPath = NSIndexPath(forRow:index, inSection: 0)
            self.tableView.insertRowsAtIndexPaths([indexPath], withRowAnimation: UITableViewRowAnimation.Automatic)
            saveCheckListItems()
        }
        
        func editItem(item:MainItem){
            self.tableView.reloadData()
            saveCheckListItems()
        }```
    
    - 应用初次加载的时候 读取本地数据
    
    ```swift
    p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Menlo; color: #ffffff; min-height: 16.0px}p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Menlo; color: #ffffff}p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Menlo; color: #4cbf57}p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Menlo; color: #93c86a}span.s1 {font-variant-ligatures: no-common-ligatures}span.s2 {font-variant-ligatures: no-common-ligatures; color: #c2349b}span.s3 {font-variant-ligatures: no-common-ligatures; color: #00afca}span.s4 {font-variant-ligatures: no-common-ligatures; color: #ffffff}span.s5 {font: 14.0px 'PingFang SC'; font-variant-ligatures: no-common-ligatures}span.s6 {font-variant-ligatures: no-common-ligatures; color: #e44448}span.s7 {font: 14.0px 'PingFang SC'; font-variant-ligatures: no-common-ligatures; color: #e44448}span.s8 {font-variant-ligatures: no-common-ligatures; color: #93c86a}
    
        override func viewDidLoad() {
            super.viewDidLoad()
            
    //        self.onCreateData()
            
            //MARK: 读取数据
            loadLocationData()
            
            print("沙盒路径为\(documentsDirectory())")
            print("文件路径为\(dataFilePath())")
            
            saveCheckListItems()
        }```
    
    ![swift数据.gif](https://img.haomeiwen.com/i189984/9e8294334354149f.gif?imageMogr2/auto-orient/strip)
    

    相关文章

      网友评论

          本文标题:Swift数据存储

          本文链接:https://www.haomeiwen.com/subject/ctfijttx.html