iPhone开发【二十】数据持久化总结之第1篇—NSUserDefaults

【Qt-4】QT基于qhttp-server搭建http服务器 QT搭建http服务器 阅读详情

转载请注明出处,原文网址:http://blog.youkuaiyun.com/m_changgong/article/details/8262079 作者:张燕广

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,工程结构如下:


2、修改ViewController.xib,添加两个Label控件和两个TextField控件,如下:


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,如下:


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中输入如下内容:


退出Simulator,然后重新运行程序,上次输入的内容已显示在TextField中。

6、数据到底保存到哪儿了???

iPhone应用程序沙盒,或许你听过这个东东,没听过也没关系,下面就说说它。

1)iPhone应用程序只能在为该改程序创建的文件系统中读取文件,不可以去其它地方访问,此区域被成为沙盒。

2)  沙盒在哪儿呢?先来看一下iPhone应用程序安装后的存放位置,我mac上的地址如下:

/Users/duobianxing/Library/Application Support/iPhone Simulator/5.0

我的模拟器是5.0的,截图如下:

打开Applications目录,截图如下:


上图中每个目录都是一个应用程序的沙盒,最上面的那个目录就是刚刚演示的工程Persistence_NSUserDefaults安装后的目录,打开该目录,截图如下:

也可以打开Applications下的其它目录验证一下,每个iPhone应用程序自己的沙盒下有3个目录,分别是:

1)Documents:应用程序数据保存到该目录下,但是基于NSUserDefaults的数据不会保存到该目录下(所以,刚才演示的工程Persistence_NSUserDefaults的数据没有保存到该目录下)

2)Library:基于NSUserDefaults的数据会保存到该目录,工程Persistence_NSUserDefaults的数据一定保存到该目录下啦,赶紧找一下吧,

子目录Preferences下的com.zyg.ios.Persistence-NSUserDefaults.plist文件保存了server、port数据,打开看一下,截图如下:

可以发现,使用NSUserDefaults时,数据默认保存在沙盒的Library目录下的文件:工程名称.plist中。

3)tmp:存储临时文件。每个应用程序应该负责删除自己tmp目录下的临时数据。

7、总结:

NSUserDefaults一般用于保存首选项信息、缓存数据等少量数据。

本文工程Persistence_NSUserDefaults纯粹为了演示,实际开发中不一定这样应用。

需要源码的网友请留言哦

数据挖掘实战-基于情感分析+网络语义分析+LDA主题分析对大唐不夜城用户评论进行文本分析 本研究基于去哪儿网和携程网的1888条大唐不夜城游客评论数据,运用Python进行文本分析。通过情感分析发现游客评价以积极为主(占比约70%),中性占20%,消极占10%。采用ROSTCM6软件进行社会网络语义分析,识别不同情绪下的高频词汇。使用LDA主题模型将评论划分为3个主题(夜景、表演、美食),并分析主题强度随时间变化趋势。实验包含数据采集、预处理、情感分析、语义网络分析和LDA建模等完整流程,为景区管理优化提供数据支持。源代码涵盖爬虫、数据处理和可视化分析的全套实现。 阅读详情

相关推荐

105. replace( )函数

【目录】

weixin_63986098的博客 1万+

iPhone开发数据持久化总结之第1篇—NSUserDefaults .

IOS数据持久化方式大概有5种: 1)User Defaults 2)属性列表 3)归档 4)sqlite3数据库 5)coreData 其实1)与2)都是用.plist属性文件保存数据,只是操作方式及保存位置不同,这5种方式的使用情景及其优缺点,后面的博文会逐一进行对比分析。 下面首先演示第一种方式User Defaults。 实现的功能:1)演示NSUserDe...

阿弥陀佛 175

MPN – 制造商物料编号(延伸)

此外,用户还可以在物料主数据中定义阻止MPN材料的原因,以及在采购订单创建时,是否可以将现有的MPN材料修改为其他MPN材料,从而实现对MPN材料的精细控制和管理。通过使用AMPL,用户可以指定每个MPN材料是否仅能为特定工厂或整个企业所有工厂采购、采购的时间段、是否必须属于特定修订级别、是否只能从特定制造商工厂采购以及是否被阻止及其原因。通过AMPL管理,企业可以规范采购流程,避免使用未经批准的材料,从而提高采购的透明度和效率,同时也为质量控制提供了保障‌。3、QM中的制造商物料。质量信息记录QI01。

yanzibing99的博客 2484

iPhone开发之使用NSUserDefaults存储数据

之前做数据持久化,发现NSUserDefaults还是挺好用的,然后就写一些经验之谈 NSUserDefaults用于存储数据量小的数据,例如用户配置。并不是所有的东西都能往里放的, 只支持:NSString, NSNumber, NSDate, NSArray, NSDictionary 存放于一个plist文件中。这个文件位于在 app同级目录的/Library/Prefer

yutaotst的专栏 470

COCOS 3.8 接入高德定位SDK

/微信登录所必须的code。//是否获得code。

八喜互动 1992

scanpy单细胞转录组python教程(四):单样本数据分析之降维聚类及细胞注释

本文介绍了使用scanpy进行单细胞转录组分析的降维聚类和细胞注释流程。首先通过PCA降维并可视化主成分贡献,然后使用不同分辨率参数(0.2-1.0)进行Leiden聚类。通过Wilcoxon检验鉴定marker基因,并基于经典marker基因手动注释细胞类型。最后对低质量细胞群进行过滤,并重新计算邻居图和UMAP可视化。流程中包含PCA方差分析、多分辨率聚类比较、marker基因筛选和基于UMAP的细胞类型可视化等关键步骤,为后续分析奠定基础。

qq_42090739的博客 941

深入理解iPhone数据持久化(手把手教你iphone开发 – 基础篇)

在所有的移动开发平台数据持久化都是很重要的部分:在j2me中是rms或保存在应用程序的目录中,在symbian中可以保存在相应的磁盘目录中和数据库中。symbian中因为权限认证的原因,在3rd上大多数只能访问应用程序的private目录或其它系统共享目录。在iphone中,apple博采众长,提供了多种数据持久化的方法,下面笔者会逐个进行详细的讲解。 iphone提供的数据持久化的方...

146

Oracle EBS AP 应付模块核心实现逻辑(极简骨架 + 分层拆解 + 业务流转 + 分录 + 核心表)

Oracle EBS AP应付模块采用四层逻辑架构:1)主数据层统一管控供应商基础信息;2)发票负债层通过三单匹配校验生成应付账款;3)付款核销层实现负债冲减;4)SLA层自动生成财务凭证。核心流程包括发票验证(匹配PO/收货单)、付款核销(全额/部分冲账)、会计分录自动生成(通过SLA引擎)。模块严格遵循"无匹配不负债、无验证不入账"原则,与采购、库存等模块深度集成,实现从供应商创建到付款核销的完整业务闭环,确保应付账款准确性和审计追溯能力。

金牌架构师 439

【转】iphone之NSUserDefaults

转自:http://blog.sina.com.cn/s/blog_4adf31ea0100sxxr.html 概述 该NSUserDefaults类提供了一个默认的系统编程接口进行交互。 在默认系统允许应用程序来定制其行为,以符合使用者的偏好。 例如,您可以允许用户确定测量你的应用程序显示文件或如何往往会自动储存单位。 通过分配应用程序记录的参数值在用户的默认...

dishuangqing3232的博客 110

如何计算 R 中的基尼系数(附示例)

以意大利统计学家Corrado Gini命名,基尼系数是衡量人口收入分配的一种方法。基尼系数的值在 0 到 1 之间,值越高代表收入不平等越大,其中:0代表完全的收入平等(每个人的收入都一样) 1代表完全的收入不平等(一个人拥有所有收入) 您可以在此处找到按国家/地区列出的基尼系数列表。以下示例显示了使用DescTools包中的Gini()函数计算 R 中的基尼系数的两种方法。示例 1:使用个人收入计算基尼系数假设我们有以下 10 个人的年收入列表:收入:5 万美元、5 万美元、7 万美元、7 万美元、7

Mrrunsen的博客 2990

[DDR5]DDR5 SDRAM 状态图 和 基本功能

DDR5 SDRAM的读写操作以突发(burst mode)为导向,从选定的位置开始,并按照编程顺序进行16个突发长度或8个“切片”突发长度的操作。从ACTIVATE命令开始,然后是读取或写入命令。

串起点滴 1200

转:iPhone开发之使用NSUserDefaults存储数据

iPhone中在本地存储数据简单的说有三种方式:数据库、NSUserDefaults和文件。 NSUserDefaults用于存储数据量小的数据,例如用户配置。并不是所有的东西都能往里放的,只支持:NSString, NSNumber, NSDate, NSArray, NSDictionary,详细方法可以查看类文件。 一、将数据存储到NSUserDefaults: // UISw...

weixin_30660027的博客 121

SystemVerilog从入门到实战

SystemVerilog复合数据类型概述 SystemVerilog增强了Verilog的数据建模能力,提供多种复合数据类型: 数组类型:包括定宽数组(固定大小)、动态数组(运行时分配)和多维数组,支持高效索引访问。 队列:结合数组和链表特性,支持两端快速插入/删除操作,提供push/pop等方法。 关联数组:键值对存储结构,支持稀疏数据存储和快速查找,提供exists/delete等方法。 结构体:组合不同类型数据成员,支持打包(packed)形式以优化存储空间。 枚举类型:为数值赋予语义名称,支持状态

2301_79143213的博客 1223

NSUserDefaults数据存储iphone上存储位置

NSUserDefaults用于保存iPhone程序的数据那么这些数据最终存放在什么地方呢?存放于一个plist文件中。这个文件位于<br /><UUID for your App>/Library/Preferences/<your App's bundle ID>.plist<br /> 

link的专栏 5699

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

NSUserDefaults 用户轻量级的数据持久化 (留用)

#import @class NSArray, NSData, NSDictionary, NSMutableDictionary, NSString, NSURL; FOUNDATION_EXPORT NSString * const NSGlobalDomain; FOUNDATION_EXPORT NSString * const NSArgumentDomain; FOUNDATIO

小五 1325

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

Cocos2d IPhone 游戏开发秘籍(二)

在本章中,我们将涵盖以下要点:读取 PLIST 数据文件读取 JSON 数据文件读取 XML 数据文件使用 NSUserDefaults 保存简单数据将对象存档到存档文件中修改嵌套元数据将数据保存到 PLIST 文件中将数据保存到 SQLite 数据库中使用 Core Data 保存数据简单和复杂游戏都会处理和持久化数据。这包括高分、玩家资料和保存的游戏会话等。在本章中,我们将使用多种不同的技术来读取和写入数据。此菜谱以及随后的两个菜谱展示了如何将简单数据读取和解析到 Cocos2d 场景中。在这里,我们读

龙哥盟 756

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

NSUserDefaults数据存储iPhone上的位置

NSUserDefaults用于保存iPhone程序的数据那么这些数据最终存放在什么地方呢? 存放于一个plist文件中。这个文件位于 /Library/Preferences/.plist

Leeyehong_self的专栏 594

IOS中NSUserDefaults的用法(轻量级本地数据存储)

NSUserDefaults适合存储轻量级的本地数据,比如要保存一个登陆界面的数据,用户名、密码之类的,个人觉得使用NSUserDefaults是首选。下次再登陆的时候就可以直接从NSUserDefaults里面读取上次登陆的信息咯。 因为如果使用自己建立的plist文件什么的,还得自己显示创建文件,读取文件,很麻烦,而是用NSUserDefaults则不用管这些东西,就像读字符串一样,直接读取

集结号 14万+

iphone开发常用的持久化存储数据的策略

我正也想写一篇关于iphone数据存储的文章。关于存储,分为持久性的数据存储和运行时的数据存储,前者在app关闭之后数据仍然存在,而后者是在程序运行时才存在。再具体一点,则前者关闭之后仍然数据存在说明数据以特定的形式存储在设备上。 后者在运行时存在,说明是在内存中,全局或者局部的变量,在app关闭之后内存回收,数据也就销毁了。所以,可以看出,一个持久性的数据存储就必须的要以某种形式写在设备上,ip

程序人生 2014

iphone之NSUserDefaults

概述 该NSUserDefaults类提供了一个默认的系统编程接口进行交互。 在默认系统允许应用程序来定制其行为,以符合使用者的偏好。 例如,您可以允许用户确定测量你的应用程序显示文件或如何往往会自动储存单位。 通过分配应用程序记录的参数值在用户的默认数据库设置这种优惠。 在运行时,可以使用NSUserDefaults对象读取您的应用程序的默认数据库使用从用户的默认值。NSUserD

xiechengfa的技术笔记 785

【iOS开发】---- NSUserDefaults

iphone在本地存储数据有三种方式:数据库、NSUserDefaults和文件。         NSUserDefaults用于存储数据量较小的数据,比如用户配置。        但并不是所有的数据类型都可以存储在其中,NSUserDefaults只支持以下几种数据类型:NSString, NSNumber, NSDate, NSArray, NSDictionary。而且,自定义的对象放

冻僵的企鹅'zone 2545

NSUserDefaults

今天再用NSUserDefaults存储数据的时候报错了,直接崩溃,我靠,真是可怕啊,我的基础知识太弱了,于是就补习了一下NSUserDefaults的基础知识,首先我是类型用错了,我存了一个numutablearray,再然后呢,我存了一个二维数组,最后呢存的数据量大,由于是36篇文章,字数较多,但是最后我也没有具体算出来它能存多少字,反正是不适合大量数据存储的,储存个登陆信息还是非常好的。

PersonSky的博客 381

iPhone开发之使用NSUserDefaults存储数据!!!

NSUserDefaults用于存储数据量小的数据,例如用户配置。并不是所有的东西都能往里放的, 只支持:NSString, NSNumber, NSDate, NSArray, NSDictionary 存放于一个plist文件中。这个文件位于在 app同级目录的/Library/Preferences目录下 其实 NSUserDefaults主要就是setObject和objectF

bestoneToo的博客 576

iPhone NSUserDefaults 保存数据

苹果公司强烈建议在打开程序时能回复到之前关闭时的状态。 既然是苹果公司的建议,当然不能忽视。。。  如果要实现在打开程序时回复到之前的状态,那么必须记录下之前关闭时的各种信息 在启动程序时,读取这些信息并恢复状态。  苹果公司提供了一种方式用于保存这种信息,NSUserDefaults类 使用这个类以key-value字典形式保存数据,下次再取出来即可。 -

活着就为改变世界 1921

iOS开发————数据本地化方式之NSUserDefaults

NSUserDefaults适合存储轻量级的本地数据,比如要保存一个登陆界面的数据,用户名、密码之类的,个人觉得使用NSUserDefaults是首选。下次再登陆的时候就可以直接从NSUserDefaults里面读取上次登陆的信息咯。 因为如果使用自己建立的plist文件什么的,还得自己显示创建文件,读取文件,很麻烦,而是用NSUserDefaults则不用管这些东西,就像读字符串一样,直接

Lerryteng的博客 1035
上一篇: Couldn't register com.zyg.ios.XXX with the bootstrap server. Error: unknown error code.
下一篇: iPhone开发【二十一】数据持久化总结之第2篇—属性文件(.plist)
程序员长弓
博客等级 码龄20年 650粉丝 183原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值