文档章节

IOS中常用的几种数据存储

一个小民工
 一个小民工
发布于 2015/05/11 22:41
字数 273
阅读 19
收藏 0

1,pilist

- (IBAction)save:(id)sender {
    NSString *path = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) firstObject];
    
    path = [path stringByAppendingPathComponent:@"data.plist"];
    NSLog(@"%@",path);
    NSArray *data = @[@1,@2,@3];
    
    [data writeToFile:path atomically:YES];
    
}
- (IBAction)read:(id)sender {
    NSString *path = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) firstObject];
    
    path = [path stringByAppendingPathComponent:@"data.plist"];
    
    NSArray *array = [NSArray arrayWithContentsOfFile:path];
    NSLog(@"%@",array);
    
}

2,偏好设置

- (IBAction)save:(id)sender {
    // [NSUserDefaults standardUserDefaults]可以直接操作偏好设置文件夹
    NSUserDefaults *de = [NSUserDefaults standardUserDefaults];
    
    // 自动帮我们生成一个plist文件存放在偏好设置的文件夹
    [de setObject:@"cg" forKey:@"name"];
    
    // 同步:把内存中的数据和沙盒同步
    [de synchronize];
    
}
- (IBAction)read:(id)sender {
    NSUserDefaults *de = [NSUserDefaults standardUserDefaults];
    
    NSString *name = [de objectForKey:@"name"];
    
    NSLog(@"%@",name);
    
    
}

3,自定义对象存储

person.h

#import <Foundation/Foundation.h>

@interface Person : NSObject<NSCoding>

@property (nonatomic,copy) NSString *name;
@property (nonatomic,assign) NSInteger age;

@end

person.m

#import "Person.h"

@implementation Person


- (void)encodeWithCoder:(NSCoder *)aCoder
{
    [aCoder encodeInteger:_age forKey:@"age"];
    [aCoder encodeObject:_name forKey:@"name"];
}

- (id)initWithCoder:(NSCoder *)aDecoder
{
    if (self = [super init]) {
        _age = [aDecoder decodeIntegerForKey:@"age"];
        _name = [aDecoder decodeObjectForKey:@"name"];
    }
    return self;
}
@end

控制器:

- (IBAction)save:(id)sender {
    Person *p = [[Person alloc] init];
    
    
    p.age = 10;
    p.name = @"cg";
    
    NSString *path = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) firstObject];
    
    NSString *filePath = [path stringByAppendingPathComponent:@"person.data"];
    
    [NSKeyedArchiver archiveRootObject:p toFile:filePath];
    
    
    
}
- (IBAction)read:(id)sender {
    
    NSString *path = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) firstObject];
    
    NSString *filePath = [path stringByAppendingPathComponent:@"person.data"];
    
    Person *p = [NSKeyedUnarchiver unarchiveObjectWithFile:filePath];
    NSLog(@"%ld---%@",(long)p.age,p.name);
}


© 著作权归作者所有

一个小民工
粉丝 1
博文 42
码字总数 10693
作品 0
宁波
私信 提问
开源中国 iOS 开发专区改版上线

开源中国 iOS 开发专区改版上线了,新版本在原有的文章分类基础上增加了 iOS 开发中常用的各种开源控件,并对这些控件进行了分类以及截图。 访问新版 iOS 开发专区 http://www.oschina.net/i...

oschina
2012/08/07
3.2K
17
2018 iOS 面试题大全(补充完整版)

原文地址:2018 iOS 面试题大全 由于原作者并没有继续更新,这里我转过来继续更新下 这个栏目将持续更新--请iOS的小伙伴关注! 1、iOS 应用导航模式有哪些? 2、iOS 中持久化方式有哪些? 3、...

Theendisthebegi
2018/11/15
0
0
iOS帅气加载动画、通知视图、红包助手、引导页、导航栏、朋友圈、小游戏等效果源码

iOS精选源码 如丝般顺滑的微信朋友圈(点赞,评论,图文混排表情,...(http://www.code4app.com/thread-8412-1-1.html) 动态菜单第三版本:动态项,自适应方向(http://www.code4app.com/thre...

Android爱开源
01/30
0
0
面试官自述:面向高级开发人员的iOS面试问题

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

菇哒微课
2018/04/26
0
0
2019年,iOS 面试题持续更新(附答案)

这个栏目将持续更新--请iOS的小伙伴关注! 1、多线程的应用 2、GCD实现多个请求都完成之后返回结果 3、A、B两个int数组,得到A数组中B数组不包含的元素 4、事件传递链,页面上一个按钮,按钮和...

猿_员
01/26
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Guava RateLimiter + AOP注解实现单机限流、统计QPS

1、基于springboot项目pom.xml添加如下依赖: <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-aop</artifactId></dependency><d......

铁骨铮铮
4分钟前
0
0
龙芯版办公软件下载

金山wps office   rpm包:http://ftp.loongnix.org/os/loongnix/1.0/os/Packages/w/wps-office-10.8.0.6472-1.a20p1.mips64el.rpm   deb包:http://packages.deepin.com/loongson/pool/......

gugudu
9分钟前
0
0
BI报表分析和数据可视化,推荐这三个开源工具!

开源篇 一、Superset 1、技术架构:Python + Flask + React + Redux + SQLAlchemy 2、使用人群: (1)开发/分析人员做好看板,业务人员浏览看板数据 (2)业务人员可自行编辑图表,查看满足...

飓风2000
16分钟前
0
0
CountDownLatch

CountDownLatch的概念 CountDownLatch是一个同步工具类,用来协调多个线程之间的同步,或者说起到线程之间的通信(而不是用作互斥的作用)。 CountDownLatch能够使一个线程在等待另外一些线程...

少年已不再年少
24分钟前
0
0
centos7 新手阿里云服务器安装mongodb

简介 MongoDB 是一个基于分布式 文件存储的NoSQL数据库 由C++语言编写,运行稳定,性能高 旨在为 WEB 应用提供可扩展的高性能数据存储解决方案 MongoDB特点 模式自由 :可以把不同结构的文档存...

醉雨
35分钟前
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部