iOS开发问题总结swift 文章收集Swift

Swift中自定义model的归档

2016-05-13  本文已影响745人  小豆豆苗

首先对于归档的定义就不再赘述

最近在做一个项目,里面有一个功能是把购物车里的产品缓存到本地,由于数据量较少,选择归档模式。

首先看一下数据模型。SSTCart对应的是购物车的model,里面包含两个元素,一个是list数组,用来存放产品,一个是购物车所有产品的totalprice。list数组里面的的产品对应的model是SSTOrderItem

步骤一:对SSTCart的model进行encode

步骤二:对SSTOrderItem的model进行encode

这样两个model的encoding算是实现了

步骤三:归档和解档的方法

自己写了一个文件的读写的class
在这个class里面的代码如下:
static func getFilePath(filePath: String) -> String? {

    var paths = NSSearchPathForDirectoriesInDomains(NSSearchPathDirectory.CachesDirectory, NSSearchPathDomainMask.AllDomainsMask, true)
    if paths.count > 0 {
        return "\(paths[0])/"+filePath
    }
    
    return nil
  }
    //MARK: 归档的方法
  static func archive(fileName: String, object: NSObject) -> Bool {
    let name = getFilePath(fileName)!
    return NSKeyedArchiver.archiveRootObject(object, toFile: name )
  }
  //MARK: 解档的方法
  static func unarchive(fileName: String) -> AnyObject? {
    return NSKeyedUnarchiver.unarchiveObjectWithFile(getFilePath(fileName)!)
  }

步骤四:把请求得到的购物车数据进行归档

代码如下:

    if FileOP.archive(kShoppingCartFileName, object: tmpSelf!.shoppingCart){
         print("add to file success")
     } else {
         print("add to file failure!")
     }             

其中,tmpSelf!.shoppingCart是从网络请求之后得到的数据。

至此,归档操作已经完成,如果需要解档操作的话,直接调用 unarchiver方法即可。

上一篇 下一篇

猜你喜欢

热点阅读