文档章节

iOS开发??保存自定义对象数组、字典到文件

hanbing94
 hanbing94
发布于 2016/02/27 12:42
字数 308
阅读 17
收藏 1

iOS开发??保存自定义对象数组、字典到文件

2014-11-25 22:26

在ios中,要保存普通的数组到文件可以直接调用-wirteToFile:atomically:方法写入,并且可以通过NSArray的方法-initWithContentOfFile:来读文件初始化数组。然而,当要保存的数组中存储的数据对象是自定义对象时,就得通过对象归档的方法来实现了,具体来说


一、自定义对象实现归档协议,并实现方法- (id)initWithCoder:和方法- (void)encodeWithCoder:

@interface CourseModel : CYZBaseModel <NSCoding>


- (id)initWithCoder:(NSCoder *)aDecoder
{
    self = [super init];
    if (self) {
        self.courseName = [aDecoder decodeObjectForKey:@"courseName"];
        self.courseTeacher = [aDecoder decodeObjectForKey:@"courseTeacher"];
        self.courseTime = [aDecoder decodeObjectForKey:@"courseTime"];
        self.courseLocation = [aDecoder decodeObjectForKey:@"courseLocation"];
        self.shouldUseTip = [aDecoder decodeBoolForKey:@"shouldUseTip"];
        self.row = [aDecoder decodeIntegerForKey:@"row"];
        self.section = [aDecoder decodeIntegerForKey:@"section"];
    }
    return self;
}

- (void)encodeWithCoder:(NSCoder *)aCoder
{
    [aCoder encodeObject:self.courseName forKey:@"courseName"];
    [aCoder encodeObject:self.courseTeacher forKey:@"courseTeacher"];
    [aCoder encodeObject:self.courseTime forKey:@"courseTime"];
    [aCoder encodeObject:self.courseLocation forKey:@"courseLocation"];
    [aCoder encodeBool:self.shouldUseTip forKey:@"shouldUseTip"];
    [aCoder encodeInteger:self.row forKey:@"row"];
    [aCoder encodeInteger:self.section forKey:@"section"];
}


二、获得保存文件的路径

- (NSString *)filePath
{
    return [[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0] stringByAppendingPathComponent:@"course.plist"];
}




三、调用NSKeyedArchived类的类方法:- (void)archiveRootObject:toFile:写入文件 

    NSString *path = [self filePath];
    [NSKeyedArchiver archiveRootObject:self.allCourses toFile:path];



四、调用NSKeyedUnarchiver类的类方法:- (id)unarchiveObjectWithFile:读文件

    NSString *path = [self filePath];
    self.allCourses = [NSKeyedUnarchiver unarchiveObjectWithFile:path];
    if (self.allCourses == nil) {
        self.allCourses = [NSMutableArray array];
    }


本文转载自:

共有 人打赏支持
hanbing94
粉丝 2
博文 66
码字总数 38602
作品 0
朝阳
iOS开发·runtime+KVC实现多层字典模型转换(多层数据:模型嵌套模型,模型嵌套数组,数组嵌套模型)

本文实验Demo传送门:DictToModelDemo 前言:将后台JSON数据中的字典转成本地的模型,我们一般选用部分优秀的第三方框架,如SBJSON、JSONKit、MJExtension、YYModel等。但是,一些简单的数据...

陈满iOS
05/08
0
0
iOS使用Objective-c自定义cordova插件(-)

本系列教程为博主初次使用开发,内容如有差错,欢迎指正,敬请谅解。 博客地址:http://blog.img421.com/iosshi-yong-object-czi-ding-yi-cordovacha-jian/ Mac安装ionic和cordova我们已经熟悉,...

Michaelyn
2017/10/23
0
0
面试官自述:面向高级开发人员的iOS面试问题

当您准备进行技术性iOS面试时,了解您可能会询问哪些主题以及经验丰富的iOS开发人员期望什么是非常重要的。 这是许多硅谷公司用来衡量iOS候选人资历水平的一系列问题。 这些问题涉及iOS开发的...

菇哒微课
04/26
0
0
iOS精美过度动画、视频会议、朋友圈、联系人检索、自定义聊天界面等源码

iOS精选源码 iOS 精美过度动画源码(http://www.code4app.com/thread-14827-1-1.html) iOS简易聊天页面以及容联云IM自定义聊天页面的实现思路(http://www.code4app.com/thread-30348-1-1.htm...

sunnyaigd
07/11
0
0
iOS奇思妙想之使用block替代通知

前言 iOS开发中,很多情况下会使用到通知,通知的好处很多,但是也有很多坑点,一旦没有管理好,就会造成很多莫名其妙的bug。既然通知使用不当很容易出现问题,那有没有什么办法来避免?经过...

季末微夏
昨天
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Java IO类库之PrintStreamWriter

* A <code>PrintStream</code> adds functionality to another output stream, * namely the ability to print representations of various data values * conveniently. Two other fea......

老韭菜
48分钟前
0
0
qduoj~前端~二次开发~笔记

青岛大学qdu的onlinejudge是js的写的前端,框架是vue.js,在nodejs上部署运行,其实整体运行还是建立在docker的容器虚拟环境里,这里暂时不需要docker。安装环境是Ubuntu14-64bit 1.安装一大...

虚拟世界的懒猫
51分钟前
6
0
ConcurrentHashMap源码解读

部分内容转自:http://jiabinyuan.xyz/#/app/archive/detail/25 内部结构 内部采用了segment结构,每一个segment相当于一个hashtable。看下面的结构图: 从图的结构我们可以了解到,Concurr...

edwardGe
56分钟前
1
0
Ubuntu终端Tab键自动补全

打开 /etc/bash.bashrc,找到下列代码,取消注释。 #enable bash completion in interactive shells#if ! shopt -oq posix; then# if [-f /usr/share/bash-completion/bash_compl......

大熊猫
今天
0
0
polipo socks5代理转http代理

天朝的网络,哎~ 装个 yarn 都时而会卡 假设在SSlocal 已经装好运行的前提下,来安装设置 polipo sudo apt-get install polipo sudo vim /etc/polipo/config 追加下列配置内容,并保存 socksP...

纯洁徐
今天
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部