iOS数据持久化——属性列表和归档

学习笔记之什么是持久化和对象关系映射ORM技术 学习笔记之什么是持久化和对象关系映射ORM技术by Naven at 2005-09-19何谓“持久化”持久(Persistence),即把数据(如内存中的对象)保存到可永久保存的存储设备中(如磁盘)。持久化的主要应用是将内存中的数据存储在关系型的数据库中,当然也可以存储在磁盘文件中、XML数据文件中等等。何谓“持久层”持久层(Persistence Layer),即专注于实现数据持久化应用领域的 阅读详情

iOS数据持久化的方式分为三种

属性列表 (自定义的Property List 、NSUserDefaults)

归档 (NSKeyedArchiver)

数据库 (SQLite、Core Data、第三方类库等)

本文只介绍:属性列表和归档

一. 属性列表

Plist一般用于存储Dictionary、Array、Boolean、Data、Date、Number、String这些类型的数据,但Boolean、Data、Date、Number、String类型的数据一般不直接存入Plist文件中,因为Plist文件有分层的概念,一般用NSDictionary或NSArray作为容器,再把其他数据类型装入,最后把容器存入Plist文件。Plist文件不能直接存储自定义的类,需要进行转化成上述的数据类型,才能存储。

(一). 数据的简单存储

NSDictionary或NSArray使用writeToFile:atomically:方法,会默认存储到Plist文件

    // 获取沙盒中documents目录的路径
    NSString *documentsPath = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)[0];

    // 拼接路径
    NSString *someObjPath = [documentsPath stringByAppendingPathComponent:@"someObj.plist"];

    // 要写入文件的数组
    NSArray *someObj = @[@"AAA",@"BBB",@999,@'A',@[@{@"name":@"小明"}]];

    // 把数组写入plist文件
    // 第一个参数是文件名,第二个参数为是否使用辅助文件,如果为YES,则先写入到一个辅助文件,然后辅助文件再重新命名为目标文件,
    // 如果为NO,则直接写入到目标文件
    [someObj writeToFile:someObjPath atomically:YES];

(二). NSFileManager常用的文件管理

  1. 创建目录 createDirectoryAtPath:

  2. 创建文件 createFileAtPath:

  3. 删除某个文件 removeItemAtPath:

  4. 检查某个文件是否存在 fileExistsAtPath:

  5. 检查文件是否可读 isReadableFileAtPath:

  6. 是否可写:isWritableFileAtPath:

  7. 取得文件属性 fileAttributesAtPath:

  8. 改变文件属性changeAttributesAtPath:

  9. 从path代表的文件中读取数据:contentsAtPath

  10. 移动文件movePath:toPath:handler:

  11. 复制文件copyPath:toPath:handler:

    // 1. 在沙盒里新建目录,再在目录里新建文件夹
    // 创建一个文件管理器
    NSFileManager *fileManager = [NSFileManager defaultManager];

    // 获取沙盒下的documents路径
    NSString *documentsPath = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES).firstObject;

    // 拼接路径
    NSString *newFilePath = [documentsPath stringByAppendingPathComponent:@"NewFile"];

    // 创建新目录
    [fileManager createDirectoryAtPath:newFilePath withIntermediateDirectories:YES attributes:nil error:nil];


      // 读写数据一
    // 2. 向fileNew.plist写入数据
    // 把路径改变到新路径下
    [fileManager changeCurrentDirectoryPath:[newFilePath stringByExpandingTildeInPath]];

    // 创建fileNew.plist文件
    [fileManager createFileAtPath:@"fileNew.plist" contents:nil attributes:nil];

    // 写入数据
    NSArray *dataArr = @[@[@100,@"study"],@{@"name":@"xiaoming"}];

    // 拼接fileNew.plist路径
    NSString *dataPath = [newFilePath stringByAppendingPathComponent:@"fileNew.plist"];

    // 把数组写入fileNew.plist
    [dataArr writeToFile:dataPath atomically:YES];


    // 3. 读取fileNew.plist数据
    NSArray *arrData = [NSArray arrayWithContentsOfFile:dataPath];

    NSLog(@"%@",arrData);



    // 读写数据二
    // 使用NSMutableData存储数据要记住存储的顺序,读取数据时要要根据那个顺序计算每个数据所处的位置
    // 2. 向fileName文件写入数据
    // 待写入的数据
    NSString *dataStr = @"New Friend";
    int dataInt = 666;
    float dataFloat = 3.14159f;

    // 拼接存储数据的路径
    NSString *dataPath2 = [newFilePath stringByAppendingPathComponent:@"fileName"];

    //创建数据缓冲
    NSMutableData *writerData = [[NSMutableData alloc] init];

    //将字符串添加到缓冲中
    [writerData appendData:[dataStr dataUsingEncoding:NSUTF8StringEncoding]];

    //将其他数据添加到缓冲中
    [writerData appendBytes:&dataInt length:sizeof(dataInt)];
    [writerData appendBytes:&dataFloat length:sizeof(dataFloat)];

    //将缓冲的数据写入到文件中
    [writerData writeToFile:dataPath2 atomically:YES];


    // 3. 读取数据:
    // 读取fileName文件中的数据
    NSData *readerData = [NSData dataWithContentsOfFile:dataPath2];

    // 计算dataStr在dataStr的区间,并获取字
    dataStr = [[NSString alloc] initWithData:[readerData subdataWithRange:NSMakeRange(0, [dataStr length])]
                                   encoding:NSUTF8StringEncoding];

    // 计算dataInt在dataStr的区间,并获取
    [readerData getBytes:&dataInt range:NSMakeRange([dataStr length], sizeof(dataInt))];

    // 计算dataFloat在dataStr的区间,并获取
    [readerData getBytes:&dataFloat range:NSMakeRange([dataStr length] + sizeof(dataInt), sizeof(dataFloat))];

    NSLog(@"dataStr:%@   dataInt:%d   dataFloat:%f", dataStr,dataInt,dataFloat);


    // 删除fileName文件
    [fileManager removeItemAtPath:@"fileName" error:nil];

    // 删除一个目录:
    // currentDirectoryPath:当前目录
    NSLog(@"%@",fileManager.currentDirectoryPath);
    [fileManager removeItemAtPath:fileManager.currentDirectoryPath error:nil];

二. 偏好设置

(一). 知识点

  1. 偏好设置的本质还是plist文件存储,相对于Plist文件存储来讲存储数据更快捷,不需要获取全路径。

  2. 偏好设置用来保存应用程序设置和属性、用户保存的数据,当用户再次打开程序或开机后这些数据仍然存在。

  3. 很多iOS应用都支持偏好设置,比如保存用户名、密码、字体大小等设置,iOS也提供了一套标准的解决方案来为应用加入偏好设置功能。
  4. 每个iOS应用都有一个NSUserDefaults实例,它是一个单例对象,通过它来存取偏好设置,设置信息都是键值对的形式。
  5. 用UserDefaults实例设置数据时,不是立即写入,而是根据时间戳定时地把缓存中的数据写入本地磁盘,所以调用了set方法之后数据有可能还没有写入磁盘,如果应用程序突然终止了,数据有可能写入不成功。
  6. 偏好设置是专门用来保存应用程序的配置信息的, 一般情况不要在偏好设置中保存其他数据。
  7. 如果利用系统的偏好设置来存储数据, 默认就是存储在Preferences文件夹下面的,偏好设置会将所有的数据都保存到同一个文件中。
  8. 偏好设置针对同一个关键字对应的对象或者数据,可以对它进行重写,重写之后关键字就对应新的对象或者数据,旧的对象或者数据会被自动清理。
  9. 使用偏好设置对数据进行保存之后, 它保存到系统的时间是不确定的,会在将来某一时间点自动将数据保存到Preferences文件夹下面,如果需要即刻将数据存储,可以使用[defaults synchronize];强制写入偏好设置文件。
  10. iOS7之后,如果不写[defaults synchronize];,数据也会同步存储。

(二). 具体使用

    NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];

    [userDefaults setValue:@"小明" forKey:@"name"];
    [userDefaults setValue:@"男" forKey:@"sex"];
    [userDefaults setValue:@"学生" forKey:@"work"];

    // 写入磁盘
    [userDefaults synchronize];

    NSLog(@"%@",[userDefaults objectForKey:@"name"]);
    NSLog(@"%@",[userDefaults objectForKey:@"sex"]);
    NSLog(@"%@",[userDefaults objectForKey:@"work"]);

三. 归档与解档

(一). 知识点

  1. 归档又名序列化,把对象转为字节码,以文件的形式存储到磁盘上;程序运行过程中或者重新打开程序时,可以通过解归档(反序列化)还原这些对象。
  2. 不是所有的对象都可以直接用这种方法进行归档,只有遵守了NSCoding协议的对象才可以,如果对象是NSString、NSDictionary、NSArray、NSData、NSNumber等类型,可以直接用NSKeyedArchiver进行归档。
  3. 每次归档对象时,都会调用encodeWithCoder:方法;一般在这个方法里面指定如何归档对象中的每个实例变量,可以使用encodeObject:forKey:方法归档实例变量。
  4. 每次从文件中恢复(解码)对象时,都会调用initWithCoder:方法;一般在这个方法里面指定如何解码文件中的数据为对象的实例变量,可以使用decodeObject:forKey方法解码实例变量。
  5. 归档和解归档可以用于少量数据的持久化存储和读取,且通过归档创建的文件是加密的

缺点:在归档的形式来保存数据,只能一次性归档保存以及一次性解压,所以只能针对小量数据。而且对数据操作比较笨拙,即如果想改动数据的某一小部分,还是需要解压整个数据或者归档整个数据。

(二). 具体使用

归档方式有以下三种:
a. 对Foundation框架中对象进行归档
b. 对自定义的内容进行归档
c. 对自定义的对象进行归档

1. 对Foundation框架中对象进行归档

    // 获取文件路径
    NSString *documentsPath = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)[0];
    // 拼接路径
    NSString *dataPath = [documentsPath stringByAppendingPathComponent:@"NewData.data"];

    // 待归档的数据
    NSArray *dataArr = @[@"天天",@"编程"];

    // 归档
    if ([NSKeyedArchiver archiveRootObject:dataArr toFile:dataPath]) {
        NSLog(@"Archiver success !");
    }

    // 解档
    NSArray *data = [NSKeyedUnarchiver unarchiveObjectWithFile:dataPath];

    NSLog(@"%@%@",data[0],data[1]);

2. 对自定义的内容进行归档

    // 获取文件路径
    NSString *documentsPath = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)[0];
    // 拼接路径
    NSString *dataPath = [documentsPath stringByAppendingPathComponent:@"NewData.data"];

    // 创建存储数据的NSData对象
    NSMutableData *dataM = [NSMutableData data];

    // 创建归档对象
    NSKeyedArchiver *archiver = [[NSKeyedArchiver alloc] initForWritingWithMutableData:dataM];

    // 添加归档内容
    [archiver encodeObject:@"小明" forKey:@"name"];
    [archiver encodeObject:@"男" forKey:@"sex"];
    [archiver encodeInteger:19 forKey:@"age"];

    // 完成归档内容
    [archiver finishEncoding];

    // 写入磁盘
    if ([dataM writeToFile:dataPath atomically:YES]) {
        NSLog(@"Archiver success !");
    }


    // 解档
    // 获取数据
    NSData *data = [NSData dataWithContentsOfFile:dataPath];

    // 创建解档对象
    NSKeyedUnarchiver *unarchiver = [[NSKeyedUnarchiver alloc] initForReadingWithData:data];

    // 解档
    NSString *name = [unarchiver decodeObjectForKey:@"name"];
    NSString *sex = [unarchiver decodeObjectForKey:@"sex"];
    NSInteger age = [unarchiver decodeIntForKey:@"age"];


    NSLog(@"%@  %@  %ld",name,sex,age);

3. 对自定义的对象进行归档

---------- Person.h 文件

#import <Foundation/Foundation.h>

@interface Person : NSObject <NSCoding>

@property (nonatomic,strong) NSString *name;

@property (nonatomic,strong) NSString *sex;

@property (nonatomic,assign) NSInteger age;

@end

---------- Person.m 文件

#import "Person.h"

@implementation Person 

// 归档
- (void)encodeWithCoder:(NSCoder *)aCoder {
    [aCoder encodeObject:self.name forKey:@"name"];
    [aCoder encodeObject:self.sex forKey:@"sex"];
    [aCoder encodeInteger:self.age forKey:@"age"];
}

// 解档
- (instancetype)initWithCoder:(NSCoder *)aDecoder {

    if (self = [super init]) {
        self.name = [aDecoder decodeObjectForKey:@"name"];
        self.sex = [aDecoder decodeObjectForKey:@"sex"];
        self.age = [aDecoder decodeIntegerForKey:@"age"];

    }
    return self;
}

@end

---------- 对Penson对象进行归档与解档

    // 获取Documents的路径
    NSString *documentPath = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES).firstObject;
    // 拼接路径
    NSString *path = [documentPath stringByAppendingPathComponent:@"person.data"];

    //
    Person *per = [[Person alloc] init];
    per.name = @"xiaoming";
    per.sex = @"男";
    per.age = 20;

    // 归档
    [NSKeyedArchiver archiveRootObject:per toFile:path];

    // 解档
    Person *person = [NSKeyedUnarchiver unarchiveObjectWithFile:path];

    NSLog(@"%@",person.sex);
15、属性列表和归档:iOS 数据持久化的利器 本文深入讲解了iOS开发中的两种重要数据持久化方式:属性列表(Property Lists)和归档(Archiving)。属性列表适合保存少量结构化数据,如应用设置和配置文件;而归档则适用于复杂对象图的持久化,支持自定义编码规则与版本控制。文章通过示例代码详细介绍了它们的基本使用、高级特性及优化技巧,并对两者的适用场景进行了对比分析,帮助开发者根据需求选择合适的数据持久化方案。 阅读详情

相关推荐

41、iOS 数据持久化:从属性列表到归档和 SQLite3

本文深入介绍了 iOS 开发中的三种主要数据持久化方法:属性列表序列化、对象归档以及 SQLite3 数据库操作。通过详细的代码示例和对比分析,帮助开发者根据实际需求选择合适的数据存储方案,涵盖从简单数据保存到复杂对象和大数据处理的应用场景。

pytorchlight8的博客 63

数据持久化

数据持久化企业数据架构存储技术存储架构 企业数据架构 持久化(Persistence),即把数据(如内存中的对象)保存到可永久保存的存储设备中,如磁盘等。 数据按存储类型可以分为缓存数据库、关系型数据库、NoSQL数据库、图片和视频等文件的对象存储数据库等。 其中缓存数据库是应用内存存储数据,其余的存储类型都是持久化的存储。 联机交易区,即需要进行OLTP(On-line Transaction Processing,联机事务处理)的数据区域,与统计分析区相比,数据为近期产生的,热度较高,数据量相对较

lxw的博客 8070

西门子【Automation Framework V1.2】AF架构:从软件栈到高效自动化项目的构建蓝图

本文深入解析西门子Automation Framework V1.2 (AF架构) 的核心价值与实施蓝图。该框架通过定义标准化的软件栈(如TIA Portal V19、STEP7、WinCC Unified)和严格的安装配置流程,将自动化项目开发从依赖个人经验的“手工作坊”模式,转变为高效、可复制的工业化模式。遵循此架构,工程师能快速构建稳定可靠的项目基础,规避环境冲突,从而专注于核心工艺与逻辑设计,大幅提升团队协作与项目交付效率。

weixin_29230059的博客 428

数据持久化的几种方式

数据持久化的方式有很多,最近只学了几种,在此一一列出来,记录下自己的成长,以下几种方式都是在编辑器模式下直接运行的,不需要游戏运行。 1.首先是Json格式的写入和读取 需要存储的数据类一定要加上[Serializable]序列化标签,Data类里面有名字和一个SubData的集合,SubData类里面则包括常用的几个数据类型的字段,最上面的LoadJson是一个可以在编辑器菜单栏直接执行...

雪之梦境的博客 7483

AD9176 双通道高速DAC调试记录

AD9176是一款高性能双通道16位数模转换器,支持高达12.6GSPS采样率,专为多频段无线应用设计。该器件集成8通道15.4Gbps JESD204B接口,支持复数/实数数据输入,每通道最大输入速率达3.08GSPS。关键特性包括:48位高精度NCO、灵活的插值滤波器(最高12倍)、优异的动态性能(SFDR达-83dBc@1.84GHz)以及多芯片同步功能。硬件调试需重点关注时钟配置(建议250M基准时钟)、JESD参数匹配及交流耦合设计。测试指标要求SFDR>55dBc@312MHz,实测值可达65d

universaldata的博客 1489

ArcGIS中的Python入门知识点整理

关于Arcpy大家应该都比较熟悉,Python用的好,数据处理快又好!在ArcGIS中ArcPy是一个以成功的arcgisscripting模块为基础并继承了arcgisscripting功能进而构建而成的站点包。目的是为以实用高效的方式通过Python执行地理数据分析、数据转换、数据管理和地图自动化创建基础。ArcPy提供了丰富纯正的Python体验,具有代码自动完成功能。今天我们就看看关于Arcpy相关处理的使用,通过一些简单代码与大家一起认识Arcpy。

xjt921122的博客 1771

Redis的持久化详解

Redis的持久化,Redis是一个基于内存的数据库,它的数据是存放在内存中,内存有个问题就是关闭服务或者断电会丢失。Redis的数据也支持写到硬盘中,这个过程就叫做持久化。RDB(Redis DataBase):简而言之,就是在指定的时间间隔内,定时的将 redis 存储的数据生成Snapshot快照并存储到磁盘等介质上;AOF(Append Of File):将 redis 执行过的所有写指令记录下来,在下次 redis 重新启动时,只要把这些写指令从前到后再重复执行一遍,就可以实现数据恢复了。

怪咖@的博客 3万+

三极管自激升压电路设计 - 从参数计算到实践验证

本文详细解析了三极管自激升压电路(焦耳小偷电路)的设计原理与实践方法。通过剖析自激振荡机制与三极管电流关系,指导读者完成从核心参数计算、关键元件选型到面包板搭建调试的全过程。文章重点阐述了如何利用电感、三极管等基础元件实现低压直流到高压的转换,是理解开关电源与电磁能量转换的绝佳实践项目。

weixin_29250573的博客 366

iOS数据持久化之属性列表和归档

IOS数据持久化的方式分为三种: 1.属性列表 (自定义的Property List 、NSUserDefaults) 2.归档 (NSKeyedArchiver) 3.数据库 (SQLite、Core Data、第三方类库等) NSUserDefaults轻量级本地数据存储 保存一个登陆界面的数据,用户名、密码之类的,可将NSUserDefaults作为首选。 用NSUser

半岛孤城 351

168、运动控制中的标定:编码器零点标定

文章摘要 运动控制系统中的编码器零点标定是确保精确控制的关键基础步骤。文章通过实际案例说明,即使0.3度的零点偏移也会导致电机异常抖动。详细介绍了三种标定方法:反电动势法(需示波器)、电流注入法(适合量产)和霍尔传感器法(粗标定),并指出常见陷阱如忽略极对数、Z脉冲重复性问题和温度漂移。提供了基于STM32的嵌入式实现代码片段,强调标定后的静态、动态和负载验证的重要性。作者建议量产产品设置自动标定工位,研发样机采用更精确的方法,并强调标定数据应与电机序列号绑定。

m0_50546716的博客 136

数控系统(CNC)系列:Hurco VMX42SR_(3).控制系统硬件组成部分

控制箱是CNC系统的核心部分,负责处理所有的控制指令和数据。它通常包含主控板、电源模块、接口板等关键组件。伺服驱动器是CNC系统中的关键组件,负责将主控板发出的控制信号转换为电机所需的驱动电流。它通过闭环控制确保电机的精确运动。电机是CNC系统中的执行机构,负责实现主控板发出的运动指令。常见的电机类型包括步进电机和伺服电机。传感器是CNC系统中的重要组件,用于检测和反馈机床的运行状态。常见的传感器类型包括位置传感器、速度传感器、温度传感器等。电源供应系统为CNC系统的所有组件提供电力。主电源。

2401_87715305的博客 1279

​iOS中的数据持久化方式,基本上有以下四种:属性列表、对象归档、SQLite3和Core Data

iOS中的数据持久化方式,基本上有以下四种:属性列表、对象归档、SQLite3和Core Data 1.属性列表 涉及到的主要类:NSUserDefaults,一般 [NSUserDefaults standardUserDefaults]就够用了 @interface User : NSObject @property (nonatomic, assign) NSInteg

he317165264的博客 486

基于Python的Booking酒店数据爬虫实战:最新技术与完整代码解析

本文将详细介绍如何使用Python构建一个高效的Booking酒店数据爬虫,涵盖从基础爬取到高级反反爬技术的完整实现。我们将使用最新的Python爬虫技术栈,包括requests-html、Playwright、智能代理轮换等技术,并提供完整的可运行代码示例。文章将深入探讨爬虫的各个组成部分,包括数据提取、存储、反反爬策略以及性能优化等方面。关键词:Python爬虫、Booking数据采集、反反爬技术、Playwright、数据存储。

2201_76125261的博客 936

iOS中 数据持久化方式

iOS中的数据持久化方式,基本上有以下四种:  属性列表、对象归档、SQLite3和Core Data 1.属性列表 属性列表文件是一种XML文件,Foundation框架中的数组和字典等都可以于属性列表文件相互转换。 NSArray类常用读写属性列表文件的方法: +arrayWithContentsOfFile:类级构造方法,用于从属性列表文件中读取数据,创建NSA

wwwwwwwwwwwwdi的博客 449

冷门但实用:Python爬取微信公众号历史文章,突破微信反爬限制(2025有效)

2025年微信公众号爬取的核心是「冷门方法+指纹伪装」,而非常规接口破解,itchat-uos+Playwright组合是突破设备指纹的关键;登录态持久化、动态Token实时获取、频率严格控制是避免被封禁的三大核心;文章内容解析需解决2025新增的编码混淆问题,chardet+BeautifulSoup是冷门但有效的方案;合规是前提,爬取频率、数据用途需严格遵守平台/法律规则。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 3777

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

ios数据持久化的四种方式

iOS中常用的四种数据持久化方法简介 iOS中的数据持久化方式,基本上有以下四种:属性列表、对象归档、SQLite3和Core Data iOS中的数据持久化方式,基本上有以下四种:属性列表、对象归档、SQLite3和Core Data 1.属性列表 涉及到的主要类:NSUserDefaults,一般 [NSUserDefaults standardUserDefaults]就够用

u012953036的博客 353

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

objective C中数据持久化方式1--对象归档

第一、数据持久化的方式: NSKeyedArchiver--对象归档 属性列表化(NSArray、NSDictionary、NSUserDefault) SQlite数据库、CoreData数据库 其中第一、二种方式针对数据量小的数据,第三种方式针对大数据,归档的文件是加密的,属性列表明文的。 归档的形式; 对foundation库中对象进行归档 自定义对象的归档(需要实现归档协议:...

weixin_34080571的博客 199

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

iOS中的数据持久化方式,基本上有以下四种:属性列表、对象归档、SQLite3和Core Data...

1.属性列表涉及到的主要类:NSUserDefaults,一般 [NSUserDefaults standardUserDefaults]就够用了@interface User : NSObject <NSCoding>@property (nonatomic, assign) NSInteger userID;@property (nonatomic, copy) NSString ...

weixin_30847271的博客 105

iOS中的数据持久化方式

iOS中的数据持久化方式,基本上有以下四种:属性列表、对象归档、SQLite3和Core Data 1.属性列表 涉及到的主要类:NSUserDefaults,一般 [NSUserDefaults standardUserDefaults]就够用了 @interface User : NSObject @property (nonatomic, assign) NSInteg

smallaga的博客 282

ios数据持久化-属性列表NSUserDefaults、对象归档NSKeyedArchiver和NSKeyedUnarchive、嵌入式数据库(SQLite3)...

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

weixin_34220623的博客 122

iOS开发-Day32 数据持久化

iOS中的数据持久化方式,基本上有以下四种:属性列表、对象归档、SQLite3和Core Data1.属性列表 涉及到的主要类:NSUserDefaults,一般 [NSUserDefaults​ standardUserDefaults​]就够用了@interface User : NSObject @property (nonatomic, assign) NSInteger userID

Tim的博客 427

iOS中 常用的数据持久化方法

持久化(Persistence),即把数据(如内存中的对象)保存到可永久保存的存储设备中(如磁盘)。持久化的主要应用是将内存中的对象存储在关系型的数据库中,当然也可以存储在磁盘文件中、XML数据文件中等等。 关键就是内存的数据会丢失,所以我们要把它保存在存储设备中,以便下次需要的时候可以再把数据取出来 其实说白点 就是把数据存到硬盘上不会丢失的地方。 追问 把数据保存到数据库或

u013321328的专栏 843

iOS开发笔记--数据持久化的四种方式

iOS中的数据持久化方式,基本上有以下四种:  属性列表、对象归档、SQLite3和Core Data 1.属性列表 涉及到的主要类:NSUserDefaults,一般 [NSUserDefaults​ standardUserDefaults​]就够用了 @interface User : NSObject @property (nonatomic, assign) NSI

hopedark的专栏 3119
上一篇: iOS应用沙盒
下一篇: iOS中的触摸事件
活在生活里
博客等级 码龄11年 94粉丝 82原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值