IOS持久化数据----(保存数据的一系列方法)

iphone实现文件的读写操作 实现iphone实现文件的读写操作的源码。能够完成文件的读写操作 立即下载
http://superman474.blog.163.com/blog/static/1206614620118525537389/

  
数据持久存储到IOS文件系统中有三种不同的机制:属性列表,对象归档,嵌入式数据库SQLite3(另外还有其他方法,可以用传统的C  
IO函数读取或者写入数据,也可以使用Cocoa的低级文件管理工具) 

  每 一个应用程序支持三个文件夹 Documents, Library 和  tmp。应用程序将其数据存储在Documents中,(但基于NSUserDefaults的首选设置除外,它存储在 Library/Preferences文件夹中),当ios设备同步时,不会去备份/tmp中的文件。

 1。 下面这句话将返回Documents目录
  NSString *Path = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0]
我们可以通过在这个路径结尾附加一个字符串来创建一个文件名,用于执行读取或者写入操作。
NSString *filename = [Path stringByAppendingPathComponent:@"test.txt"];
   上面这句话结束之后会filename将包含test.txt文件的完整路径,该文件位于应用程序的Documents目录下,我们可以用filename来创建读取和写入文件。

2。获取对应应用程序临时目录的引用比较方便,
NSString *tmpPath = NSTemporaryDirectory();


3,下面是基本的代码把一个数组写入文件中,(属性列表)
wiriteToFile 

NSString *str = @"abc";
NSString *astr = @"efg";
NSArray *Array = [NSArray arrayWithObjects:str, astr, nil];
    
//Save
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
if (!documentsDirectory) {
    NSLog(@"Documents directory not found!");
}
NSString *appFile = [documentsDirectory stringByAppendingPathComponent:@"Savedatas.plist"];
[[NSArray arrayWithObjects:Array,nil] writeToFile:appFile atomically:NO];    
    
    
//load
if([[NSFileManager defaultManager] fileExistsAtPath:appFile])
    self.SaveDataArray = [NSMutableArray arrayWithContentsOfFile:appFile];        
else
    self.SaveDataArray  = [NSMutableArray arrayWithContentsOfFile:[[NSBundle mainBundle]  pathForResource:@"Savedatas" ofType:@"plist"]];
NSArray *strArray = [self.SaveDataArray objectAtIndex:0];
    
str = [strArray objectAtIndex:0];
astr = [strArray objectAtIndex:1];

4.归档 例子(NSKeyedArchiver)
NSString *str = @"abc";
NSString *astr = @"efg";
NSArray *Array = [NSArray arrayWithObjects:str, astr, nil];
     
//Save
NSString *Path = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0]; NSString *filename = [Path stringByAppendingPathComponent:@"test"];
[NSKeyedArchiver archiveRootObject:Array toFile:filename];
     
str = @"a";
astr = @"";
     
//load
NSArray *arr = [NSKeyedUnarchiver unarchiveObjectWithFile: filename];
str = [arr objectAtIndex:0];
astr =  [arr objectAtIndex:1];
     
NSLog(@"str:%@",str);
NSLog(@"astr:%@",astr);



5.例子(NSUserDefaults)
NSString *str = @"abc";
NSString *astr = @"efg";
NSArray *Array = [NSArray arrayWithObjects:str, astr, nil];
     
//Save
NSUserDefaults *SaveDefaults = [NSUserDefaults standardUserDefaults];
[SaveDefaults setObject:Array forKey:@"SaveKey"];
     
str = @"a";
astr = @"";
     
//load
Array = [SaveDefaults objectForKey:@"SaveKey"];
str = [Array objectAtIndex:0];
astr = [Array objectAtIndex:1];
NSLog(@"str:%@",str);
NSLog(@"astr:%@",astr);


6。下面是从论坛中找的两个便利的方法,用于从存储和读取数据。
如下:
-(BOOL) writeApplicationData:(NSDictionary *)data  writeFileName:(NSString *)fileName
{
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *documentsDirectory = [paths objectAtIndex:0];
    if (!documentsDirectory) {
        NSLog(@"Documents directory not found!");
        return NO;
    }
    NSString *appFile = [documentsDirectory stringByAppendingPathComponent:fileName];
    return ([data writeToFile:appFile atomically:YES]);
}

-(id) readApplicationData:(NSString *)fileName
{
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *documentsDirectory = [paths objectAtIndex:0];
    NSString *appFile = [documentsDirectory stringByAppendingPathComponent:fileName];
    NSDictionary *myData = [[[NSDictionary alloc] initWithContentsOfFile:appFile] autorelease];
    return myData;
}


7.最简单的方法将从网络上下载的图片保存到本地~
//将图片保存到本地
+ (void)SaveImageToLocal:(UIImage*)image Keys:(NSString*)key {
   NSUserDefaults* preferences = [NSUserDefaults standardUserDefaults];
   //[preferences persistentDomainForName:LocalPath];
   [preferences setObject:UIImagePNGRepresentation(image) forKey:key];
}
 
//本地是否有相关图片
+ (BOOL)LocalHaveImage:(NSString*)key {
   NSUserDefaults* preferences = [NSUserDefaults standardUserDefaults];
   //[preferences persistentDomainForName:LocalPath];
   NSData* imageData = [preferences objectForKey:key];
   if (imageData) {
     return YES;
   }
   return NO;
}
 
//从本地获取图片
+ (UIImage*)GetImageFromLocal:(NSString*)key {
   NSUserDefaults* preferences = [NSUserDefaults standardUserDefaults];
   //[preferences persistentDomainForName:LocalPath];
   NSData* imageData = [preferences objectForKey:key];
   UIImage* image;
   if (imageData) {
     image = [UIImage imageWithData:imageData];
   }
   else {
     NSLog(@"未从本地获得图片");
   }
   return image;
}

8.这是老外分享的一段代码,保存照片的,很简单,呵呵 


参数说明:
NSData to retrieve the image from the URL
NSDocumentDirectory to find Document folder’s Path
UIImagePNGRepresentation to save it as PNG
UIImageJPEGRepresentation to save it as JPEG

代码:

NSLog(@”Downloading…”);
// Get an image from the URL below
UIImage *image = [[UIImage alloc] initWithData:[NSData  dataWithContentsOfURL:[NSURL  URLWithString:@"http://www.objectgraph.com/images/og_logo.png"]]]; 

 

NSLog(@”%f,%f”,image.size.width,image.size.height);

// Let’s save the file into Document folder.
// You can also change this to your desktop for testing. (e.g. /Users/kiichi/Desktop/)
// NSString *deskTopDir = @”/Users/kiichi/Desktop”;

NSString *docDir = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];

// If you go to the folder below, you will find those pictures
NSLog(@”%@”,docDir);

NSLog(@”saving png”);
NSString *pngFilePath = [NSString stringWithFormat:@"%@/test.png",docDir];
NSData *data1 = [NSData dataWithData:UIImagePNGRepresentation(image)];
[data1 writeToFile:pngFilePath atomically:YES];

NSLog(@”saving jpeg”);
NSString *jpegFilePath = [NSString stringWithFormat:@"%@/test.jpeg",docDir];
NSData *data2 = [NSData dataWithData:UIImageJPEGRepresentation(image, 1.0f)];//1.0f = 100% quality
[data2 writeToFile:jpegFilePath atomically:YES];

NSLog(@”saving image done”);

[image release];

iOS沙盒写入读取文件 一个简单的demo来获取沙盒的各个文件夹路径、写入简单的文件、读取简单的文件。 立即下载

相关推荐

IOS 文件读写操作详解及简单实例

主要介绍了IOS 文件读写操作详解及简单实例的相关资料,需要的朋友可以参考下

IOS的四种数据存储方式及优劣

IOS有四种常用数据存储方式: 第一种方法:用NSUserDefaults存储配置信息 NSUserDefaults被设计用来存储设备和应用的配置信息,它通过一个工厂方法返回默认的、也是最常用到的实例对象。这个对象中储存了系统中用户的配置信息,开发者可以通过这个实例对象对这些已有的信息进行修改,也可以按照自己的需求创建新的配置项。他在IOS6之后已经在文件沙盒中看不到它的信息了,所以可以存储机密

jia12216的专栏 1万+

卷积操作复杂度公式推导

复杂度Hout⋅Wout⋅Cout⋅Cin⋅k2\text{复杂度} = H_{\text{out}} \cdot W_{\text{out}} \cdot C_{\text{out}} \cdot C_{\text{in}} \cdot k^2复杂度Hout​⋅Wout​⋅Cout​⋅Cin​⋅k2该公式反映了卷积核作用于每个像素时的局部操作和跨通道的计算需求。卷积计算复杂度与输入尺寸线性相关。

qq_41037856的博客 1306

iOS:沙盒之 Documents、Library、tmp、SystemData

iOS APP都有一个存储空间,就是沙盒。 APP的沙盒不能相互访问。沙盒根目录结构:Documents、Library、temp、SystemData 可通过一下代码查看 NSLog(@"path=[%@]",NSHomeDirectory()); 1:Documents Documents文件夹下面的内容会默认备份到iCloud,通过Wi-Fi每天自动备份。所以不能放大文件(审核的时候可能会被拒)。 2:Library a:Caches iTunes或iCloud不会对其进行备份。如果存储空间过低,

_ 1462

日前日内多阶段多时间尺度源荷储协调调度(matlab代码)

多阶段多时间尺度的协调调度的优势是考虑新能源出力的波 动性与随机性,需求响应负荷的不确定性会对电网制定的日前调度计划准确性造成影响,也就是能够更加精准的进行调度和分析,优化结果的可用性更强。在这方面论文里面,金力的《考虑特性分布的储能电站接入的电网多时间尺度源储荷协调调度策略》就考虑了日前日内实时三个阶段调度,每个阶段考虑了不同负荷需求响应策略,同时考虑了负荷波动性的影响,具有很强的参考意义。 目录 一、模型 二、程序运行 三、程序链接 一、模型 负荷需求响应考虑电价型和激励型两种,电.

zhangxd212489的博客 7915

VFIO框架源码分析(二十二)- IOMMUFD 的脏页跟踪与 Dirty Bits 读取

在虚拟化热迁移(Live Migration)的场景中,脏页追踪(Dirty Page Tracking)是最具挑战性的环节之一。它的核心任务是实时捕获设备(DMA)对内存的写操作,以便 VMM(如 QEMU)知道哪些内存页需要被重新传输到目标主机。在强耦合与粗粒度:脏页追踪是绑定在 Container 上的。这意味着,如果一个 Container 内有多个设备,哪怕只有一个设备在写内存,脏页追踪也会影响 Container 内的所有设备。软件模拟开销大。

qq_36071928的博客 1043

iOS往文件写数据的三种方法

1 直接通过将data加入到目标文件的方法 [self.mutableData writeToFile:@"/Users/Apple/Desktop/text.hm" atomically:YES]; 2 通过文件输出流的方式 @property (nonatomic, strong) NSOutputStream *stream; 首先根据给出的路径初始化输出流 //创建流 ...

BianHuanShiZhe的专栏 1549

机器学习——笔记整理(原理、python代码)——反反复复,出精活!

回顾知识,检查自我,开拓新域。 机器学习1.监督学习 机器学习简介: 机器学习是实现人工智能的手段,其主要研究内容是如何利用数据或经验进行学习,改善具体算法的性能。 多领域交叉,涉及概率论、统计学,算法复杂度理论等多门学科 广泛应用于网络搜索、垃圾邮件过滤、推荐系统、广告投放、信用评价、欺诈检测、股票交易和医疗诊断等应用。 机器学习分类: 机器学习一般分为下面几种类别 监督学习 ( Supervised Learning) 无监督学习 ( Unsupervised Learning) 强化学习(

weixin_45666566的博客 6486

iOS/macOS - 逐行写入文件 (NSFileHandle)

【代码】iOS/macOS - 逐行写入文件 (NSFileHandle)

AI工程化、开源分享、文档翻译、代码笔记 1128

Windows窗口编程中的WM_PAINT、WM_ERASEBKGND、InvalidateRect、UpdateWindow、BeginPaint和EndPaint等函数详解

Windows窗口编程中的WM_PAINT、WM_ERASEBKGND、InvalidateRect、UpdateWindow、BeginPaint和EndPaint等函数详解

dvlinker的技术专栏 7165

《QGIS快速入门与应用基础》239:指北针样式选择(预设/自定义)

系统解析指北针设计的核心规范与实操方法。文章首先强调行业规范红线,包括强制要求N字标注、箭头辨识度等关键要素,通过正误示例对比强化合规意识。其次详细讲解QGIS内置预设样式的分类应用,提供极简箭头、标准三角箭头等4类样式的选型对照表,并配图说明适用场景。最后介绍从基础微调到SVG导入的进阶自定义方法,帮助用户实现从合规到专业的样式设计。全文贯穿"合规优先、可读为本、美观为辅"原则,配有详细操作截图与规范对照表,适合从GIS新手到专业制图人员参考。

LuckyHanMo的博客 528

iOS - NSUserDefaults 实现数据的持久化保存

在开发的时候,我们经常会遇到一些场景,需要我们持久化保存一些数据。通常我们会将相对结构化的数据保存在远端或者本地的数据库中,而对于**相对零散**的变量数据,保存在数据库中是不太合适的。这时,接下介绍的NSUserDefaults就可以派上用场了~

Veggie的博客 1万+

【数据集总结】不透水面积ISA:GAIA、CLUD-Urban、GISA

【数据集总结】不透水面积ISA:GAIA、CLUD-Urban、GISA

WW、forever的博客 2158

iOS 数据持久化

/文件路径搜索参数一 NSSearchPathDirectory directory:指定搜索的目录名称,比如这里用NSDocumentDirectory表明我们要搜索的是Documents目录。参数二:搜索主目录的位置,NSUserDomainMask表示搜索的范围限制于当前应用的沙盒目录。参数三:是否获取完整的路径,我们知道在iOS中的全写形式是/User/userName,该值为YES即表示写成全写形式,为NO就表示直接写成“~”。//获取沙盒根路径。

qq_73106050的博客 1468

SAP SmartForms字体 :从OTF缓存溢出到完美解决

精准诊断:遇到错误,首先区分是图片过大还是字体嵌入导致。删除图片测试是最快的判别方法。字体上传规范始终从SE73入口上传用于表单打印的字体。强烈建议应用SAP Note 1301018,确保上传时勾选“不替换其他字体”,避免系统自动替换引发的意外问题。如需为同一字体族上传粗体、斜体等变体,请在SE73初始屏幕上勾选对应的属性框(如BOLD),然后分别上传对应的字体文件(如上传过程中,系统会提示输入RTF控制序列信息,这是确保打印预览正常显示的关键步骤,必须正确填写。方案选型快速止血:采用方案一(

Pegasus666的博客 294

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

【iOS】iOS持久化

学习iOS持久化笔记小结

2301_79847748的博客 976

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

ios mysql 保存图片数据_iOS持久化保存数据的方法

概论所谓的持久化,就是将数据保存到硬盘中,使得在应用程序或机器重启后可以继续访问之前保存的数据。在iOS开发中,有很多数据持久化的方案,接下来我将尝试着介绍一下6种方案:1.沙盒2.plist文件(属性列表)3.preference(偏好设置)4.NSKeyedArchiver(归档)5.SQLite 3 /FMDB6.CoreData沙盒在介绍各种存储方法之前,有必要说明以下沙盒机制。iOS程...

weixin_42509518的博客 197

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

iOS——持久化

应用沙盒文件夹包含了:Application(应用程序包):包含了所有的资源文件和和可执行文件,上架前经过数字签名,上架后不可修改。Documents:文档目录,要保存程序生成的数据,会自动被分到iCloud中。保存应用运行时生成的需要持久化的数据,iTunes同步设备时会备份该目录。例如,游戏应用可将游戏存档保存在该目录。(注意点:不要保存从网络上下载的文件,否则会无法上架!Library:用户偏好,使用 NSUserDefault 直接读写!如果要想数据及时写入磁盘,还需要调用一个同步方法。

m0_73348697的博客 2176

iOS 数据持久化之NSUserDefaults-保存Settings

原创Blog,转载请注明 blog.youkuaiyun.com/hello_hwc前言:iOS的数据持久化存储分为很多种 普通文件,plist NSUserDefaults CoreData KeyChain 本文讲解NSUserDefaults的使用什么样的数据存储在NSUserDefaults里? 用户的偏好信息,设置信息等。换句话说,app的Setting里的信息,都可以存储在这里。 不能用

Leo的专栏 6538

【iOS】——持久化

因为plist文件不能够保存自定义对象。如果一个字典中保存有自定义对象,如果把这个对象写入到文件当中,它是不会生成 plist文件的。如果对象是NSString、NSDictionary、NSArray、NSData、NSNumber等类型,可以直接用NSKeyedArchiver进行归档和恢复。

m0_73974920的博客 1824
上一篇: IOS三种随机数方法
下一篇: UIButton
Ruansf
博客等级 码龄14年 1粉丝 12原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值