首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏ShaoYL

    归档

    数据持久性的方式 NSKeyedArchiver --- 对象归档 NSUserDefaults 属性列表化(NSArray、NSDictionary保存文件) SQlite数据库、Core Data数据库 hello"]; NSString *filepath = [homeDirectory stringByAppendingPathComponent:@"temparray.adsf"]; if([NSKeyedArchiver stringByAppendingPathComponent:@"data.archive"]; //自定义归档 NSMutableData *data = [NSMutableData data]; NSKeyedArchiver *archiver = [[NSKeyedArchiver alloc] initForWritingWithMutableData:data]; [archiver encodeFloat:

    1.7K60发布于 2018-05-11
  • 来自专栏计算机视觉理论及其实现

    archive文件

    我们还可以用NSKeyedArchiver方式来进行归档,用NSKeyedUnarchiver相应的方式进行反归档。 :@"ArchiverDictionary.archiver"]; [NSKeyedArchiver archiveRootObject:dataDictionary toFile:dictionaryName ];// NSKeyedArchiver 将数据归档到NSArray或NSMutableArrayNSString *arrayName= [filePath stringByAppendingPathComponent :@"ArchiverArray.archiver"]; [NSKeyedArchiver archiveRootObject:dataArray toFile:arrayName];// NSKeyedUnarchiver if (isSuccess) { NSLog(@"Success"); }else{ NSLog(@"False"); } isSuccess= [NSKeyedArchiver

    1.6K10编辑于 2022-09-03
  • 来自专栏滕先生的博客

    iOS应用数据存储(数据持久化)的常用方式一、iOS数据持久化方式二、应用沙盒(应用程序的文件夹)三、使用方法

    iOS数据持久化方式 (1)XML属性列表(plist)归档 (2)Preference(偏好设置),本质还是通过“plist”来存储数据, 但是使用更简单(无需关注文件、文件夹路径和名称) (3)NSKeyedArchiver NSUserDefaults standardUserDefaults]; (2)用一个变量接收 switcher.on = [userDefault boolForKey:@"key_name"]; 3、自定义对象归档 NSKeyedArchiver (2)归档一个对象(先获取路径path) Person *person = [[[Person alloc] init]; [NSKeyedArchiver archiveRootObject:person NSMutableData data]创建可变数据空间 (1) 归档步骤 // 新建一块可变数据区 NSMutableData *data = [NSMutableData data]; // 将数据区连接到一个NSKeyedArchiver 对象 NSKeyedArchiver *archiver = [[NSKeyedArchiver alloc] initForWritingWithMutableData:data]; // 开始存档对象

    3.4K70发布于 2018-05-18
  • 来自专栏小蠢驴iOS专题

    iOS - 模型数据持久化保存实现

    使用归档先将model转为NSData,再存储 思路:既然NSUserDefaults不支持自定义类型存储,但是支持NSData类型存储,就通过NSKeyedArchiver转成NSData类型,再存储 ~ NSData *data = [NSKeyedArchiver archivedDataWithRootObject:_productModel]; [[NSUserDefaults standardUserDefaults mn_getSaveModelWithkey:(NSString *)key modelClass:(Class)modelClass; 内部实现原理: //传入model,进行模型转字典 ,字典通过NSKeyedArchiver //model转json NSDictionary *productDic = [model yy_modelToJSONObject]; NSData *data = [NSKeyedArchiver

    2.3K40发布于 2018-05-24
  • 来自专栏编程之旅

    iOS开发——数据持久化之归档

    既然涉及到了Model类的对象,就要考虑用归档(NSKeyedArchiver)来处理它了。NSKeyedArchiver能够存储的数据范围很广,因为它对应着MVC中的Model层,即实体类。 接下来我们来讲讲NSKeyedArchiver的使用。 即 : NSData *data = [NSKeyedArchiver archivedDataWithRootObject:_dataSource]; [[NSUserDefaults data forKey:kEditInfraredRepeater]; [[NSUserDefaults standardUserDefaults]synchronize]; 三行代码,就把NSKeyedArchiver

    84810发布于 2018-08-30
  • 来自专栏iOS开发~

    iOS_runtime实现NSCoding NSCoder缓存对象 NSCoping

    子类: NSKeyedArchiver (序列化)  从二进制流读取对象。 子类: NSKeyedUnarchiver (反序列化) 把对象写到二进制流中去。 NSUserDomainMask, YES) lastObject]; NSString *filePath = [path stringByAppendingString:@"/holderModel"]; [NSKeyedArchiver unarchiveObjectWithFile:filePath]; NSUserDefault存Model // Model 实现`NSCoding`协议 // 存 NSData *data = [NSKeyedArchiver

    55620编辑于 2022-07-20
  • 来自专栏KyXu

    【iOS开发】如何将 Array 存储在本地

    想要把它存储在本地plist文件中,需要用到 NSKeyedArchiver 和 NSKeyedUnarchiver 但是在此之前,你需要把你的类改造一下。 ? 起初的类 ? 而一旦 encode 方法被实现,NSKeyedArchiver 和 NSKeyedUnarchiver 马上就被“解锁”并可以替代 writeToFile 方法啦! ?

    1.9K10发布于 2019-04-11
  • 来自专栏月亮与二进制

    iOS存储方式之归档

    其实相关的类名为 NSKeyedArchiver ,keyed 在这里应该是对归档的数据赋上了键的意思,就想给文件存档时要按照有文件名。 demoPath = [homeDirectory stringByAppendingPathComponent:@"demo.archiver"];// 添加存储的文件名 BOOL flag = [NSKeyedArchiver multi.archiver"]; //存储多个对象的容器 NSMutableData *multiData = [[NSMutableData alloc] init]; NSKeyedArchiver *multiArchiver = [[NSKeyedArchiver alloc] initForWritingWithMutableData:multiData]; [multiArchiver

    2.5K20发布于 2021-11-23
  • 来自专栏谈补锅

    控制器和应用数据存储

    3)、使用NSKeyedArchiver对自定义对象进行归档, 使用NSKeyedUnarchiver解析归档对象       首先自定义类需要实现NSCoding协议,然后实现方法      - (void NSUserDomainMask, YES) lastObject] stringByAppendingPathComponent:@"tanPerson.data"]; if ([NSKeyedArchiver 4)使用NSKeyedArchiver归档多个对象和解析 /* 使用NSKeyedArchiver归档多个对象 */ - (IBAction)saveMulObjectByArchive:(id)sender 以便随后写入文件,或者存放从磁盘读取的文件内容 NSMutableData *data = [NSMutableData data]; //新建一块可变数据区 //将数据区连接到一个NSKeyedArchiver 对象 NSKeyedArchiver *archiver = [[NSKeyedArchiver alloc] initForWritingWithMutableData:data];

    1.2K30发布于 2018-09-27
  • 来自专栏一“技”之长

    iOS数据持久化之二——归档与设计可存储化的数据模型基类

    其存储与读取的过程,主要封装在两个类中:NSKeyedArchiver和NSKeyedUnarchiver。 archivedDataWithRootObject:@"123"];     [data writeToFile:homePath atomically:YES];     //方式二:直接写入文件     [NSKeyedArchiver data对象作为归档的容器     NSMutableData * data = [[NSMutableData alloc]init];     //创建一个归档对象,归档后写入data数据     NSKeyedArchiver  * archiver = [[NSKeyedArchiver alloc]initForWritingWithMutableData:data];     //对下面的字符串和int值进行归档序列化 MyObject * obj = [[MyObject alloc]init];     obj.name = @"jaki";     obj.age = 24;     NSData * data =  [NSKeyedArchiver

    1.4K30发布于 2018-08-16
  • 来自专栏小黑娃Henry

    iOS-Swift 完整登录方案(touchID&faceID& keychain)一iOS-Swift 完整登录方案(touchID&faceID& keychain)一

    涉及到知识点: 接入三方登录(友盟等平台有成熟的方案,不是本文讨论的重点) touchID、faceID keychain RSA加密 本地缓存,安全起见我选择NSKeyedArchiver(归档) 明确了目标就开始搞 NSKeyedArchiver 这个也是iOS中比较基础的数据本地化方案,因为Apple对数据会做加密然后写成文件,安全性相对较高,个人信息推荐使用这种方式来缓存。 一定要注意这个坑我补了好久,放出最基本的代码 //归档 if #available(iOS 11.0, *) { do { let data = try NSKeyedArchiver.archivedData } } catch { assert(true, "无法生成归档数据") return false } }else{ return NSKeyedArchiver.archiveRootObject

    2.8K20发布于 2021-08-09
  • 来自专栏宜达数字

    iOS开发--常用的数据存储方式

    iOS应用数据存储的方式 1、XML属性列表(plist)归档 2、preference(偏好设置) 3、NSKeyedArchiver归档(NSCoding) 4、SQLite3 5、Core YES)[0]; NSString *filePath = [cachepath stringByAppendingPathComponent:@"person.data"]; [NSKeyedArchiver

    1.2K20发布于 2020-06-02
  • 来自专栏落影的专栏

    iOS序列化的进阶方案——Protocol Buffer

    在本地存储时,我们可以使用YYModel将对象转成json对应的NSData,也可以使用NSKeyedArchiver结合实现NSCoding协议把对象转成NSData,进而将二进制数据存储在沙盒中或者数据库 因为项目中序列化数据到沙盒是一个高频场景,尝试过数据库、NSCoding+NSKeyedArchiver、YYModel等方法都有各自瓶颈:数据内容比较大数据库会造成体积膨胀过快不便管理,NSCoding +NSKeyedArchiver在序列化数据量较大的情况下性能不佳,YYModel在变动的时候不太友好。

    2.1K20发布于 2020-03-20
  • 来自专栏阿林前端开发攻城狮

    ios数据类型转换

    value",   @"USD", @"currencyCode",nil];            NSMutableData *data =[[NSMutableData alloc] init];  NSKeyedArchiver NSData NSArray 转换   NSArray *arr1= [[NSArray alloc]initWithObjects:@"0",@"5",nil];     NSData *data= [NSKeyedArchiver

    1.1K10发布于 2021-10-29
  • 来自专栏云原生布道专栏

    【IOS开发基础系列】数据持久化专题

    fileName = [self filePath: @"student.archiver"];     NSMutableData *data = [NSMutableData data];     NSKeyedArchiver *archiver = [[NSKeyedArchiver alloc] initForWritingWithMutableData: data];     Student* student = [[ NSMutableData *theData = [NSMutableData data];     //创建NSKeyedArchiver实例,用于将对象归档到此theData实例中。 NSKeyedArchiver *archiver = [[NSKeyedArchiver alloc] initForWritingWithMutableData: theData]; //使用“键-

    1.1K20编辑于 2023-10-16
  • 来自专栏Swift社区

    Swift 周报 第十八期

    Swift论坛 讨论是否应该用 Codable 还是用 NSCoding[3] 讨论NSKeyedArchiver, CoreData 和其他的存储方案[4] 讨论数组的悬空指针[5] do { NSCoding: https://forums.swift.org/t/should-i-stick-with-codable-or-switch-back-to-nscoding/61604 [4]NSKeyedArchiver , CoreData 和其他的存储方案: https://forums.swift.org/t/nskeyedarchiver-coredata-and-other-storage-solutions/

    2.4K20编辑于 2022-12-12
  • 来自专栏DannyHoo的专栏

    iOS开发中利用MJExtension进行归档

    2.利用NSKeyedArchiver对自定义对象进行归档。

    92220发布于 2018-09-13
  • 来自专栏iOS逆向与安全

    iOS常用的数据存储方式

    NSManagedObject子类 前言 iOS应用数据存储的常用方式 1、preference偏好设置 2、XML属性列表归档(plist) 3、使用Keychain 存储,例如存储UUID来解决设备唯一标识符获取方案 4、NSKeyedArchiver boolValue]; } 1.4 存储自定义类型对象到NSUserDefaults 自定义的类型需要转成NSData再存 setObject NSData *data = [NSKeyedArchiver

    2.5K20发布于 2021-07-05
  • 来自专栏mukekeheart的iOS之旅

    iOS学习——iOS常用的存储方式

    其中,iOS中的存储方式主要包括以下六类: plist文件(属性列表) preference(偏好设置) NSKeyedArchiver(归档) SQLite 3 CoreData 手动存放沙盒 一、沙盒机制 2.3  NSKeyedArchiver(归档) 之前说了,不管是NSUserDefaults 或者是 plist 都不能对自定义的对象进行存储,OC提供了解归档恰好解决这个问题。 使用   需要把对象归档是调用NSKeyedArchiver的工厂方法 archiveRootObject: toFile: 方法。 self.avatarView.image; 4 person.name = self.nameField.text; 5 person.age = [self.ageField.text integerValue]; 6 [NSKeyedArchiver

    3.8K100发布于 2018-03-01
  • 来自专栏iOS 开发杂谈

    浅谈 NSUserDefaults

    NSUserDefaults standardUserDefaults]; Person *person = [[Person alloc] init]; NSData *personData = [NSKeyedArchiver

    83860发布于 2018-09-30
领券