swift中使用对象归档进行数据本地

对象归档是ios持久化中的其中一种,也是很常用的一种。现在来看看swift是如何实现的。实现要点
1),必须实现NSCoding的协议

import UIKit
let path=(NSSearchPathForDirectoriesInDomains(NSSearchPathDirectory.DocumentDirectory,NSSearchPathDomainMask.UserDomainMask, true)[0] as String).stringByAppendingString("user.data")

class User: NSObject,NSCoding {
    var age:Int = 0
    var name:String?
    init() {
        super.init()
    }
    init(coder aDecoder: NSCoder!)
    {
        super.init()
        self.age=aDecoder.decodeIntegerForKey("age")
        self.name=aDecoder.decodeObjectForKey("name") as? String

    }
    func encodeWithCoder(aCoder: NSCoder!) {
        aCoder.encodeInteger(self.age, forKey: "age")
        aCoder.encodeObject(self.name, forKey: "name")
    }
    class func save(user:User)->Bool{
        return NSKeyedArchiver.archiveRootObject(user, toFile: path)
    }

    class func user()->User?{
      return  NSKeyedUnarchiver.unarchiveObjectWithFile(path) as? User
    }
}

其中注意是
1.实现init(coder aDecoder: NSCoder!)后,默认的init()构造方法会没了,所以要把默认的init()实现一下,或者是自定义其他的构造方法。
2.从文件中恢复数据的时候,返回的可能是空,所以在方法返回值的地方要注意一下

如有不妥,望流浪(大牛)指正

swift中使用对象归档进行数据本地

时间: 2024-10-14 06:04:47

swift中使用对象归档进行数据本地的相关文章

Swift语言中如何使用JSON数据教程

原文:Swift语言中如何使用JSON数据教程 这是一篇翻译文章,原文出处:http://www.raywenderlich.com/82706/working-with-json-in-swift-tutorial JSON(全称:JavaScript Object Notation),是网络服务中传输数据的常用方法,JSON因为容易使用,且可读性强, 所以非常受到欢迎. 下面是个JSON的一个片段: [ {"person": {"name":"Dani

Chrome扩展开发之三——Chrome扩展中的数据本地存储和下载

目录: 0.Chrome扩展开发(Gmail附件管理助手)系列之〇——概述 1.Chrome扩展开发之一——Chrome扩展的文件结构 2.Chrome扩展开发之二——Chrome扩展中脚本的运行机制和通信方式 3.Chrome扩展开发之三——Chrome扩展中的数据本地存储和下载 4.Chrome扩展开发之四——Gmail API的简单介绍 5.Chrome扩展开发之五——OAuth2的理解 6.Chrome扩展开发之六——GmailAssist核心功能的实现(包括Gmail API的使用中的

IOS中利用NSKeyedArchiver进行数据的归档和恢复

1.相关知识点: <1> 可以利用NSKeyedArchiver 进行归档和恢复的对象类型:NSString .NSDictionary.NSArray.NSData.                        NSNumber等 <2> 使用是必须遵循NSCoding协议对象,实现两个方法: encodeWithCoder:归档对象时,将会调用该方法. initWithCoder:每次从文件中恢复对象时,调用该方法. 2.简单例子阐述详细步骤 <1> 创建一个学生

Spark中的数据本地性

分布式数据并行环境下,保持数据的本地性是非常重要的内容,事关分布式系统性能高下. 概念: block : HDFS的物理空间概念,固定大小,最小是64M,可以是128,256 ..也就是说单个文件大于block的大小,肯定会被切分,被切分的数目大概是:比如文件是250M,block是64M,就会被分为4个block,64+64+64+58,最后一个block没有满,一个block只能有一个文件的内容,加上每个block一般有3个副本存在,那么这个文件在HDFS集群就有12个block分布,可能分

Swift中的结构体,类,协议,扩展和闭包的用法以及? 和 !的区别

// MARK: - 1.结构体 //1.声明一个结构体 struct Rect {    // 声明结构体变量的属性(存储属性)    var x:Float    var y:Float    var width:Float    var height:Float    // 声明结构体属性,要使用static    static var description:String?        // 声明一个计算属性(是用来专门计算结构体变量属性的setter,和getter方法,其本身没有存

IOS数据本地存储的四种方式--

注:借鉴于:http://blog.csdn.net/jianjianyuer/article/details/8556024 在IOS开发过程中,不管是做什么应用,都会碰到数据保存问题.将数据保存到本地,能够让程序更加流畅,不会出现让人厌恶的菊花状,使得用户的体验更好.下面是介绍数据保存的方式 第一.NSKeyedArchiver:采用归档的形式来保存数据.(归档——解档)———大量数据和频繁读写不合适使用 1.归档器的作用是将任意的对象集合转换为字节流.这听起来像是NSPropertyLis

[译] 探究 Swift 中的 Futures &amp; Promises

原文地址:Under the hood of Futures & Promises in Swift 原文作者:John Sundell 译者:oOatuo 校对者:Kangkang, Richard_Lee 探究 Swift 中的 Futures & Promises 异步编程可以说是构建大多数应用程序最困难的部分之一.无论是处理后台任务,例如网络请求,在多个线程中并行执行重操作,还是延迟执行代码,这些任务往往会中断,并使我们很难调试问题. 正因为如此,许多解决方案都是为了解决上述问题而

Swift 中枚举

Swift 中枚举高级用法及实践 字数11017 阅读479 评论0 喜欢20 title: "Swift 中枚举高级用法及实践"date: 2015-11-20tags: [APPVENTURE]categories: [Swift 进阶]permalink: advanced-practical-enum-examples 原文链接=http://appventure.me/2015/10/17/advanced-practical-enum-examples/作者=Benedik

怎样在Swift中使用CocoaPods

怎样在Swift中使用CocoaPods 它不是神秘的亚马逊区域的部落人用手捡出来的生可可的豆荚,肯定不是!让CocoaPods website来回答可能是最好的: CocoaPods是Cocoa项目的依赖管理工具.它有上千个能帮你优雅地扩充自己项目的库. 优雅地扩展项目听起来很令人好奇,但是什么是依赖管理工具呢?你为什么会需要它呢? 无论你正在创建一个什么样的app,你都有可能会用到别的开发者的代码,无论是以框架的形式还是库的形式.你可能很熟悉UIKit和Foundation,这两个都是苹果提