8.25 JSON -> File

新建类 Animal

import UIKit

class Animal: NSObject {
    var weight: Double = 0
    var name: String!
    var age: Int = 0
    
    override init() {
        super.init()
    }
    
    init(dict: NSDictionary) {
        super.init()
        
        //一定要检查安全性
        if let n = dict["name"] as? String {
            name = n
        }
        
        age = dict["age"] as! Int
        weight = dict["weight"] as! Double
    }
    
    func toDict() -> Dictionary<String, AnyObject> {
        var dict = Dictionary<String, AnyObject>()
        dict["name"] = "Dog"
        dict["weight"] = 20
        dict["age"] = 3
        
        return dict
    }
}

回到ViewController

import UIKit

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        
        let ani = Animal()
        ani.name = "Dog"
        ani.weight = 20
        ani.age = 3
        
        //to JSON String -> File
        //字典/数组
        let dict = ani.toDict()

        //NSData
        let data = try! NSJSONSerialization.dataWithJSONObject(dict, options: [])
        let s = NSString(data: data, encoding: NSUTF8StringEncoding)
        print(s!)
        
        let path1 = NSHomeDirectory() + "/Documents/1.json"
        try! data.writeToFile(path1, options: .AtomicWrite)
        
        let path2 = NSHomeDirectory() + "/Documents/2.json"
        try! s?.writeToFile(path2, atomically: true, encoding: NSUTF8StringEncoding)
        
        print(path1)
        
        let data2 = NSData(contentsOfFile: path1)
        let dict2 = try! NSJSONSerialization.JSONObjectWithData(data2!, options: .AllowFragments) as! NSDictionary
        let ani2 = Animal(dict: dict2)

        print(ani2.name, ani2.age, ani2.weight)
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }
}

运行结果如下:

Paste_Image.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 转至元数据结尾创建: 董潇伟,最新修改于: 十二月 23, 2016 转至元数据起始第一章:isa和Class一....
    40c0490e5268阅读 5,806评论 0 9
  • *面试心声:其实这些题本人都没怎么背,但是在上海 两周半 面了大约10家 收到差不多3个offer,总结起来就是把...
    Dove_iOS阅读 27,311评论 30 472
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,899评论 18 399
  • 简书 编程之乐转载请注明原创出处! JVM类加载机制 JVM类加载机制分为五个部分:加载,验证,准备,解析,初始化...
    Alien的小窝阅读 13,310评论 3 11
  • nonatomic的内存管理语义是非原子性的,非原子性的操作本来就是线程不安全,而atomic的操作是原子性的,但...
    共由石石石阅读 1,449评论 0 0