- 浏览: 534966 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
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 860为了给用户比较良好的交付,想在键盘上添加一个按钮,实时根据键盘 ... -
新风作浪博客学习(十八)openURL的使用(iOS调用系统电话、浏览器、地图、邮件等) .
2013-06-08 09:19 1004今天遇见一行代码实现打开一个网页,比起印象里的UIWebVie ... -
新风作浪博客学习(十七)UIImageView响应点击事件 .
2013-06-08 09:19 705有时候会遇到点击一张图片,然后让这张图片触发一个事件,或者是跳 ... -
新风作浪博客学习(十六)Navigation + Tab Bar 常用组合框架 .
2013-06-07 08:50 1253看到很多项目中都采用的是Navigation加Tab Bar组 ... -
新风作浪博客学习(十五)google地图定位小Demo .
2013-06-07 08:50 1141[img][/img]今天写的是一个简单功能的google地图 ... -
新风作浪博客学习(十四)怎样向iPhone模拟器中添加图片 .
2013-06-07 08:50 786在我们做项目中可能需要使用图库,模拟器是有图库的,但是如何像其 ... -
新风作浪博客学习(十三)表视图的分组分区和索引分区 .
2013-06-07 08:50 801本次实现的是表视图的分区和索引,代码和前面都差不多,主要还是代 ... -
新风作浪博客学习(十二)代码实现UITableViewCell表视图单元定制 .
2013-06-07 08:49 1001通常情况下我们会希望单元格UITableViewCell显示自 ... -
新风作浪博客学习(十一)UITableViewCell的标记、移动、删除、插入 .
2013-06-06 09:15 1118这篇文章是建立在 代码实现 UITableView与UITa ... -
新风作浪博客学习(十)代码实现 UITableView与UITableViewCell .
2013-06-06 09:14 1155我们常用的表格类视图就是用 UITableView与UITab ... -
新风作浪博客学习(九)两个UIPickerView控件间的数据依赖 .
2013-06-06 09:14 1072本篇实现功能是两个选取器的关联操作,滚动第一个滚轮第二个滚 ... -
新风作浪博客学习(八)代码实现UIPickerView .
2013-06-06 09:14 1284先说一下当个组件选取器,我们创建一个数组NSAray来保存选取 ... -
新风作浪博客学习(七)代码 实现UIDatePicker控件 和 Tab Bar 视图切换 .
2013-06-06 09:15 1108感觉代码写控件都一个理,先在ViewDidLoad中创建控件对 ... -
新风作浪博客学习(六)ios 视图切换翻页效果 .
2013-06-05 11:18 1061本文写的是视图切换,涉及到的内容有 1.实现代码添加Navi ... -
新风作浪博客学习(五)代码实现UISlider 和 UISwitch .
2013-02-18 09:15 1153本次实现的UISlider和UISwi ... -
新风作浪博客学习(四)把plist里数据显示在textField上 .
2013-02-18 09:15 918在代码实现Lable 、textFie ... -
新风作浪博客学习(三)NSBundle读取图片 plist文件和txt文件
2013-02-18 09:15 1731本文想简单介绍一下NSBundle读取图片到视图上,读取pli ... -
新风作浪博客学习(二)代码实现Lable 、textField创建界面以及键盘的处理
2013-02-18 09:15 1174今天写的是用代码实现一个简单界面,代码重复率比较高,可读性不是 ... -
新风作浪博客学习(一)plist文件读写操作
2013-02-18 09:14 1363文件plist 全名Property List,属性列表文件, ... -
GCDiscreetNotificationView提示视图
2013-06-05 11:17 559先看一下效果图: [img] ...
相关推荐
##### 第三部分:数据展示与持久化 - **第10章**:使用TableView - TableView的基本概念与实现方式 - 动态加载数据到TableView - TableView的分组与排序功能 - **第11章**:应用偏好设置 - 存储和读取用户偏好...
《iPhone开发秘籍第二版》是一本针对iOS应用开发者的权威指南,涵盖了从基础到进阶的诸多关键知识点。此资源包含2至12章的源代码,为开发者提供了实战练习和深入理解iOS编程的宝贵材料。以下是这些章节中涉及的主要...
这里我们将深入探讨如何在iPhone的两个视图之间,从view2(第二个视图)传递数据到view1(第一个视图)。 首先,我们来看一下几种常用的数据传递方法: 1. **属性赋值**:如果view1和view2之间存在明确的父子关系...
7. **数据持久化**:包括如何使用SQLite数据库、Core Data框架存储和检索应用数据,以及使用NSUserDefaults进行轻量级数据存储。 8. **网络编程**:iOS应用往往需要与服务器进行交互,如加载网页、发送和接收数据等...
在本资源中,“iPhone开发实战 书本源码”提供了从第1章到第20章的完整学习路径,旨在帮助开发者深入理解iOS应用开发。这个压缩包包含了一系列与iOS开发相关的Objective-C代码,适用于那些想要提升iOS编程技能或者...
- **Core Data**: 用于管理和持久化复杂的数据模型。支持对象关系映射 (ORM) 和版本控制。 - **NSUserDefaults**: 用于存储简单的键值对数据,适用于配置设置等。 - **文件系统操作**: 可以通过 `NSFileManager` 来...
4. **数据持久化**:应用中的数据需要在用户关闭应用后仍然保存。本章可能会介绍如何使用SQLite数据库存储数据,或者使用NSUserDefaults进行轻量级的数据保存。 5. **网络通信**:许多应用程序需要访问互联网获取或...
《cocos2d-iphone之魔塔20层第九部分》是针对iOS平台的游戏开发教程,专注于使用cocos2d-iPhone框架制作的一款经典游戏——魔塔的开发过程。cocos2d-iPhone是一个强大的2D游戏开发框架,它基于C++和Objective-C,为...
4. **Lecture 4 Slides (April 13, 2009)**: 讲座四可能会涵盖数据持久化,比如使用NSUserDefaults存储轻量级数据,SQLite数据库进行结构化数据存储,或者使用Core Data框架进行复杂的数据管理。 5. **Lecture 5 ...
7. **数据持久化**:源码可能包含SQLite数据库、Core Data或 NSUserDefaults 的使用,这些都是在iOS中保存数据的常见方式。 8. **网络编程**:可能包含网络请求(如HTTP/HTTPS)的实现,可以使用NSURLConnection、...
《cocos2d-iphone之魔塔20层第四部分》是针对移动平台游戏开发的一份教程,主要基于cocos2d-iphone框架。cocos2d-iphone是一款开源的游戏开发框架,它允许开发者使用Objective-C语言来创建2D游戏、演示和其他图形/...
讲义中可能会涉及数据持久化,这包括使用Core Data框架存储结构化数据,或者使用NSUserDefaults保存轻量级的设置和偏好。Core Data提供了模型、视图和控制器的数据管理机制,让开发者可以专注于业务逻辑,而不是底层...
9. **游戏保存与加载**:游戏数据的保存和加载是游戏持久化的重要环节。开发者需要了解如何使用NSKeyedArchiver和NSUserDefaults等iOS内置技术来保存游戏进度和用户数据。 10. **性能优化**:在移动设备上,性能...
5. **数据持久化**:包括NSUserDefaults、SQLite数据库、CoreData的使用,以及文件系统操作。 6. **网络编程**:熟悉HTTP/HTTPS请求,使用URLSession或第三方库如Alamofire进行网络请求,理解异步编程和JSON解析。 ...
归档是另一种数据持久化策略,主要用于对象的序列化和反序列化。当需要将自定义对象保存到文件系统或通过网络传输时,归档是一种有效的方式。Objective-C和Swift均支持归档机制,可以通过`NSKeyedArchiver`和`...
- **数据持久化**(Chapter 13):讲解如何使用Core Data等技术来保存和加载应用程序的数据。 - **用户默认设置**(Chapter 12):介绍如何使用NSUserDefaults来存储用户偏好设置。 - **iPad应用特别考虑**(Chapter...
你将了解Core Data框架,用于持久化应用程序的数据,以及SQLite数据库的使用。同时,你还会接触到NSUserDefaults,这是一个轻量级的选项,用于存储用户偏好设置或小型数据。 最后,性能优化和测试是确保应用程序...
- Realm:另一种流行的持久化解决方案,比CoreData更轻量级,操作更加灵活,性能优秀。 - NSUserDefaults:简单的轻量级数据存储,常用于存储用户配置信息。 4. 缓存策略(Cache Strategy): - NSURLSession:...
- 使用Core Data框架进行对象关系映射(ORM)和数据持久化。 - SQLite数据库在iOS中的应用及其优势。 - 键值存储(Key-Value Store)的使用场景和实现方式。 - 云存储解决方案的集成,如iCloud和其他云服务。 #####...