- 浏览: 518031 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
tangyunliang:
大哥你太历害了谢谢
Android基于XMPP Smack Openfire开发IM【四】初步实现两个客户端通信 -
u013015029:
LZ,请问下,在// 添加消息到聊天窗口 , 这里获取Ed ...
Android基于XMPP Smack Openfire开发IM【四】初步实现两个客户端通信 -
endual:
怎么保持会话,我搞不懂啊
Android基于XMPP Smack Openfire开发IM【一】登录openfire服务器 -
donala_zq:
显示:[2013-11-30 11:50:36 - Andro ...
android-----------新浪微博 -
donala_zq:
哥,运行不了啊
android-----------新浪微博
IOS数据持久化方式大概有5种:
1)User Defaults 2)属性列表 3)归档 4)sqlite3数据库 5)coreData
其实1)与2)都是用.plist属性文件保存数据,只是操作方式及保存位置不同,这5种方式的使用情景及其优缺点,后面的博文会逐一进行对比分析。
下面首先演示第一种方式User Defaults。
实现的功能:1)演示NSUserDefaults持久化数据。
关键词:数据持久化 NSUserDefaults
1、新建一个Sigle View Application,命名为Persistence_NSUserDefaults,工程结构如下:
[img]
[/img]
2、修改ViewController.xib,添加两个Label控件和两个TextField控件,如下:
[img]
[/img]
3、修改ViewController.h,如下:
连接输出口server、port,如下:
[img]
[/img]
4、修改ViewController.m,如下
5、编译、运行,在TextField中输入如下内容:
[img]
[/img]
退出Simulator,然后重新运行程序,上次输入的内容已显示在TextField中。
6、数据到底保存到哪儿了???
iPhone应用程序沙盒,或许你听过这个东东,没听过也没关系,下面就说说它。
1)iPhone应用程序只能在为该改程序创建的文件系统中读取文件,不可以去其它地方访问,此区域被成为沙盒。
2) 沙盒在哪儿呢?先来看一下iPhone应用程序安装后的存放位置,我mac上的地址如下:
/Users/duobianxing/Library/Application Support/iPhone Simulator/5.0
我的模拟器是5.0的,截图如下:
[img]
[/img]
打开Applications目录,截图如下:
[img]
[/img]
上图中每个目录都是一个应用程序的沙盒,最上面的那个目录就是刚刚演示的工程Persistence_NSUserDefaults安装后的目录,打开该目录,截图如下:
[img]
[/img]
也可以打开Applications下的其它目录验证一下,每个iPhone应用程序自己的沙盒下有3个目录,分别是:
1)Documents:应用程序数据保存到该目录下,但是基于NSUserDefaults的数据不会保存到该目录下(所以,刚才演示的工程Persistence_NSUserDefaults的数据没有保存到该目录下)
2)Library:基于NSUserDefaults的数据会保存到该目录,工程Persistence_NSUserDefaults的数据一定保存到该目录下啦,赶紧找一下吧,
子目录Preferences下的com.zyg.ios.Persistence-NSUserDefaults.plist文件保存了server、port数据,打开看一下,截图如下:
[img][/img]
可以发现,使用NSUserDefaults时,数据默认保存在沙盒的Library目录下的文件:工程名称.plist中。
3)tmp:存储临时文件。每个应用程序应该负责删除自己tmp目录下的临时数据。
7、总结:
NSUserDefaults一般用于保存首选项信息、缓存数据等少量数据。
本文工程Persistence_NSUserDefaults纯粹为了演示,实际开发中不一定这样应用。
1)User Defaults 2)属性列表 3)归档 4)sqlite3数据库 5)coreData
其实1)与2)都是用.plist属性文件保存数据,只是操作方式及保存位置不同,这5种方式的使用情景及其优缺点,后面的博文会逐一进行对比分析。
下面首先演示第一种方式User Defaults。
实现的功能:1)演示NSUserDefaults持久化数据。
关键词:数据持久化 NSUserDefaults
1、新建一个Sigle View Application,命名为Persistence_NSUserDefaults,工程结构如下:
[img]
[/img]
2、修改ViewController.xib,添加两个Label控件和两个TextField控件,如下:
[img]
[/img]
3、修改ViewController.h,如下:
#import <UIKit/UIKit.h> @interface ViewController : UIViewController @property(retain,nonatomic)IBOutlet UITextField *server; @property(retain,nonatomic)IBOutlet UITextField *port; @end
连接输出口server、port,如下:
[img]
[/img]
4、修改ViewController.m,如下
#import "ViewController.h" @interface ViewController () @end @implementation ViewController @synthesize server; @synthesize port; - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typically from a nib. NSLog(@"viewDidLoad"); //初始化数据 [self initData]; //订阅通知UIApplicationDidEnterBackgroundNotification,进行数据保存操作 UIApplication *app = [UIApplication sharedApplication]; [[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(applicationWillDidEnterBackground:) name:UIApplicationDidEnterBackgroundNotification object:app]; } //初始化数据 -(void)initData{ NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; server.text = [defaults objectForKey:@"server"]; port.text = [defaults objectForKey:@"port"]; } -(void)applicationWillDidEnterBackground:(NSNotification *)notification{ NSLog(@"#applicationWillEnterForeground"); [self saveData]; } //保存数据 -(void)saveData{ NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; [defaults setObject:server.text forKey:@"server"]; [defaults setObject:port.text forKey:@"port"]; [defaults synchronize];//强制User Defaults系统进行保存 } - (void)viewDidUnload { [super viewDidUnload]; // Release any retained subviews of the main view. server = nil; port = nil; } - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { return (interfaceOrientation != UIInterfaceOrientationPortraitUpsideDown); } @end
5、编译、运行,在TextField中输入如下内容:
[img]
[/img]
退出Simulator,然后重新运行程序,上次输入的内容已显示在TextField中。
6、数据到底保存到哪儿了???
iPhone应用程序沙盒,或许你听过这个东东,没听过也没关系,下面就说说它。
1)iPhone应用程序只能在为该改程序创建的文件系统中读取文件,不可以去其它地方访问,此区域被成为沙盒。
2) 沙盒在哪儿呢?先来看一下iPhone应用程序安装后的存放位置,我mac上的地址如下:
/Users/duobianxing/Library/Application Support/iPhone Simulator/5.0
我的模拟器是5.0的,截图如下:
[img]
[/img]
打开Applications目录,截图如下:
[img]
[/img]
上图中每个目录都是一个应用程序的沙盒,最上面的那个目录就是刚刚演示的工程Persistence_NSUserDefaults安装后的目录,打开该目录,截图如下:
[img]
[/img]
也可以打开Applications下的其它目录验证一下,每个iPhone应用程序自己的沙盒下有3个目录,分别是:
1)Documents:应用程序数据保存到该目录下,但是基于NSUserDefaults的数据不会保存到该目录下(所以,刚才演示的工程Persistence_NSUserDefaults的数据没有保存到该目录下)
2)Library:基于NSUserDefaults的数据会保存到该目录,工程Persistence_NSUserDefaults的数据一定保存到该目录下啦,赶紧找一下吧,
子目录Preferences下的com.zyg.ios.Persistence-NSUserDefaults.plist文件保存了server、port数据,打开看一下,截图如下:
[img][/img]
可以发现,使用NSUserDefaults时,数据默认保存在沙盒的Library目录下的文件:工程名称.plist中。
3)tmp:存储临时文件。每个应用程序应该负责删除自己tmp目录下的临时数据。
7、总结:
NSUserDefaults一般用于保存首选项信息、缓存数据等少量数据。
本文工程Persistence_NSUserDefaults纯粹为了演示,实际开发中不一定这样应用。
发表评论
-
新风作浪博客学习(十九)在iOS虚拟键盘上添加动态隐藏按钮
2013-06-08 09:19 823为了给用户比较良好的交付,想在键盘上添加一个按钮,实时根据键盘 ... -
新风作浪博客学习(十八)openURL的使用(iOS调用系统电话、浏览器、地图、邮件等) .
2013-06-08 09:19 936今天遇见一行代码实现打开一个网页,比起印象里的UIWebVie ... -
新风作浪博客学习(十七)UIImageView响应点击事件 .
2013-06-08 09:19 670有时候会遇到点击一张图片,然后让这张图片触发一个事件,或者是跳 ... -
新风作浪博客学习(十六)Navigation + Tab Bar 常用组合框架 .
2013-06-07 08:50 1194看到很多项目中都采用的是Navigation加Tab Bar组 ... -
新风作浪博客学习(十五)google地图定位小Demo .
2013-06-07 08:50 1062[img][/img]今天写的是一个简单功能的google地图 ... -
新风作浪博客学习(十四)怎样向iPhone模拟器中添加图片 .
2013-06-07 08:50 745在我们做项目中可能需要使用图库,模拟器是有图库的,但是如何像其 ... -
新风作浪博客学习(十三)表视图的分组分区和索引分区 .
2013-06-07 08:50 749本次实现的是表视图的分区和索引,代码和前面都差不多,主要还是代 ... -
新风作浪博客学习(十二)代码实现UITableViewCell表视图单元定制 .
2013-06-07 08:49 934通常情况下我们会希望单元格UITableViewCell显示自 ... -
新风作浪博客学习(十一)UITableViewCell的标记、移动、删除、插入 .
2013-06-06 09:15 1064这篇文章是建立在 代码实现 UITableView与UITa ... -
新风作浪博客学习(十)代码实现 UITableView与UITableViewCell .
2013-06-06 09:14 1116我们常用的表格类视图就是用 UITableView与UITab ... -
新风作浪博客学习(九)两个UIPickerView控件间的数据依赖 .
2013-06-06 09:14 1042本篇实现功能是两个选取器的关联操作,滚动第一个滚轮第二个滚 ... -
新风作浪博客学习(八)代码实现UIPickerView .
2013-06-06 09:14 1247先说一下当个组件选取器,我们创建一个数组NSAray来保存选取 ... -
新风作浪博客学习(七)代码 实现UIDatePicker控件 和 Tab Bar 视图切换 .
2013-06-06 09:15 1078感觉代码写控件都一个理,先在ViewDidLoad中创建控件对 ... -
新风作浪博客学习(六)ios 视图切换翻页效果 .
2013-06-05 11:18 1028本文写的是视图切换,涉及到的内容有 1.实现代码添加Navi ... -
新风作浪博客学习(五)代码实现UISlider 和 UISwitch .
2013-02-18 09:15 1077本次实现的UISlider和UISwi ... -
新风作浪博客学习(四)把plist里数据显示在textField上 .
2013-02-18 09:15 887在代码实现Lable 、textFie ... -
新风作浪博客学习(三)NSBundle读取图片 plist文件和txt文件
2013-02-18 09:15 1640本文想简单介绍一下NSBundle读取图片到视图上,读取pli ... -
新风作浪博客学习(二)代码实现Lable 、textField创建界面以及键盘的处理
2013-02-18 09:15 1140今天写的是用代码实现一个简单界面,代码重复率比较高,可读性不是 ... -
新风作浪博客学习(一)plist文件读写操作
2013-02-18 09:14 1311文件plist 全名Property List,属性列表文件, ... -
GCDiscreetNotificationView提示视图
2013-06-05 11:17 531先看一下效果图: [img] ...
相关推荐
沙盒 和 数据持久化存储 Core Data 和 NSUserDefaults 案例
iOS之数据持久化-NSUserDefaults,在进入后台模式时候,将进行数据保存!
PAPreferences, 使用 @dynamic 访问 NSUserDefaults PAPreferences使用NSUserDefaults存储用户首选项的简便方法。PAPreferences将 dynamic 属性映射到 NSUserDefaults getter和 setter,以便访问默认值,就像它们是...
GVUserDefaults, 通过属性访问 NSUserDefaults GVUserDefaults - 通过属性访问 NSUserDefaults 厌倦了编写所有代码来获取和设置NSUserDefaults中的默认值? 要使用属性来完成代码完成和编译器检查?用法在 ...
iOS数据持久化之属性列表和归档,NSUserDefaults,Plist,NSKeyedArchiver
iOS中有五种持久化数据的方式:属性列表、对象归档、NSUserDefaults、SQLite3和Core Data。 本文介绍对象归档来持久化数据。归档的作用就是将对象以文件的形式保存到磁盘中,以使得数据序列化和持久化。 使用归档的...
iOS中有五种持久化数据的方式:属性列表、对象归档、NSUserDefaults、SQLite3和Core Data NSUserDefaults官方文档介绍: NSUserDefaults类为和默认系统类交互提供了一种编程接口。默认系统允许应用程序去定制其行为...
object-c基础语法NSUserDefaults, 适合初学者,主要学习NSUserDefaults的设置,NSUserDefaults读取值,读取所有用户偏好设置,怎样持久化设置用户设置等
数据持久化,实现通过对象当、属性列表以及NSUserDefaults的方式对数据进行添加、删除及查询等处理。
使用几个小例子分别实现 归档NSKeyedArchiver、NSUserDefaults、plist文件数据存储,简单直观,代码地址https://github.com/fancyLi/data-store。
这是关于iOS数据存储,FMDB封装,SQL使用等,有需要的小伙伴可以看看!
网上有很多种数据持久化的方法,如实现自己实现I/O、数据库、云或则走第三方接口等等。但是有时候可能只是进行一些简单的数据存储,如用户的偏好设置、用户的sessionID等等,这时候使用上述方法便显得有点兴师动众了...
自己写的一个NSUserDefaults 关于字符串,数值的快速存取。
使用NSUserDefaults存储自定义对象.doc
使用系统的NSUserDefaults进行存取值实在是难以对其进行统一管理,为此NSUserDefaultsModel就很好的解决了这一难题,并且还支持Cocoapods。 github地址:https://github.com/liuchongfaye/NSUserDefaultsModel ...
代码展示了使用NSUserDefaults保存与删除数据,另外列举了Plist文件的创建、修改,删除
Swift 用户首选项 NSUserDefaults
用NSUserDefaults存储数据做的一个登陆界面,当用户名和密码对的时候就移除登陆界面
NSUserdefaults读取和写入自定义对象.rar