数据本地存储方法

2023-11-12

存储到本地的数据类型有:数组,字典,字符串,对象类型的;


1 字符串的本地存储:

NSString *str =@"dsadasd";

   NSArray *arr =NSSearchPathForDirectoriesInDomains(NSLibraryDirectory,NSUserDomainMask,YES);

   NSString *path = [arr firstObject];

   NSString *stringPath = [NSStringstringWithFormat:@"%@/hello", path];

    [strwriteToFile:stringPathatomically:YESencoding:NSUTF8StringEncodingerror:nil];

   NSLog(@"%@", path);

数据的读取:

 NSString *path = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES)firstObject];

    path = [NSStringstringWithFormat:@"%@/hello.text", path];

   NSString *str = [NSStringstringWithContentsOfFile:pathencoding:NSUTF8StringEncodingerror:nil];

   NSLog(@"%@", str);


2 jason类型的本地存储(数组,字典)

 NSArray *arr =NSSearchPathForDirectoriesInDomains(NSLibraryDirectory,NSUserDomainMask,YES);

   NSString *path = [arr firstObject];

    NSString *path = [arr firstObject];

    NSArray *a = [NSArrayarrayWithObjects:@"dsa",@"dad",nil];

   NSString *arrPath = [NSStringstringWithFormat:@"%@/arr", path];

    [awriteToFile:arrPathatomically:YES];

数据的读取:

    NSArray *array = [NSArrayarrayWithContentsOfFile:arrPath];


3 nsdata的本地存储

   NSArray *arr =NSSearchPathForDirectoriesInDomains(NSLibraryDirectory,NSUserDomainMask,YES);

   NSString *path = [arr firstObject];

字符串转换为nsdata类型

 NSString *str =@"sadas d";

   NSData *data = [strdataUsingEncoding:NSUTF8StringEncoding];

   NSString *dataPath = [NSStringstringWithFormat:@"%@/data", path];

    [datawriteToFile:dataPath atomically:YES];

jason类型转换为nsdata类型

 NSMutableArray *arr = [NSMutableArrayarrayWithObjects:@"1",@"2",@"4", @"5",nil];

 NSData *data = [NSJSONSerializationdataWithJSONObject:arroptions:NSJSONWritingPrettyPrintederror:nil];

图片转换为nsdata类型

    NSString *pic = [[NSBundlemainBundle]pathForResource:@"h1"ofType:@"jpg"];

   NSData *dPic = [NSDatadataWithContentsOfFile:pic];


data数据类型的读取

 NSString *path = [NSSearchPathForDirectoriesInDomains(NSLibraryDirectory,NSUserDomainMask,YES)firstObject];

    path = [NSStringstringWithFormat:@"%@/arrData", path];

   NSData *data = [NSDatadataWithContentsOfFile:path];

   NSLog(@"%@", data);

   // 把data转换乘字符串

   NSString *str  =[[NSStringalloc]initWithData:dataencoding:NSUTF8StringEncoding];

   NSLog(@"%@", str);

   // data转换成json

   NSArray *arr = [NSJSONSerializationJSONObjectWithData:dataoptions:NSJSONReadingMutableContainerserror:nil];

   NSLog(@"%@", arr);

4 类的本地存储

model类型对象存储:

1 先进行归档/解档(序列化,反序列化)使用协议 nscode 

// 归档或者序列化 将属性按照一定的格式分装起来 便于转换成nsdata

- (void)encodeWithCoder:(NSCoder *)aCoder

{

    [aCoder encodeObject:self.name forKey:@"name"];

    [aCoder encodeObject:self.sex forKey:@"sex"];

    [aCoder encodeObject:self.hobby forKey:@"hobby"];

    NSNumber *age = [NSNumber numberWithInteger:self.age];

    [aCoder encodeObject:age forKey:@"age"];

}

// 解档或者反序列化 将属性从data中取出来

- (id)initWithCoder:(NSCoder *)aDecoder

{

    self = [super init];

    if (self) {

        self.name = [aDecoder decodeObjectForKey:@"name"];

        self.sex = [aDecoder decodeObjectForKey:@"sex"];

        self.hobby = [aDecoder decodeObjectForKey:@"hobby"];

        NSNumber *age = [aDecoder decodeObjectForKey:@"age"];

        self.age = [age integerValue];

    }

    return self;

}




2把对象转换成nadata,然后再存储

    Student *stu = [StudentstudentWithName:@"李四"sex:@"男"hobby:@"女"age:18];

   NSData *data = [NSKeyedArchiverarchivedDataWithRootObject:stu];

   NSString *path = [NSSearchPathForDirectoriesInDomains(NSLibraryDirectory,NSUserDomainMask,YES)firstObject];

    path = [NSStringstringWithFormat:@"%@/stu.text", path];

    [datawriteToFile:pathatomically:YES];

类的读取

Student *stu = [NSKeyedUnarchiverunarchiveObjectWithFile:path];




本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

数据本地存储方法 的相关文章

随机推荐

  • 汉诺塔——递归的应用

    关于汉诺塔的原理 可看这里 点击打开链接 下面是源代码 include
  • SpringBoot参数校验--List类型

    我们在写后台接口的时候 通常会定义DTO来接收参数 在DTO中使用注解书写验证的规则 然后在Controller层使用 validated注解来验证自己制定的校验规则 但当我们的接口接收的参数为List
  • 面试题,说说你对spring IOC和AOP的理解

    在面试中 经常会问 说说你对spring IOC和AOP的理解 问题很宽泛 似乎不知道从何说起 回答思路 1 先用通俗易懂的话解释下何为IOC和AOP 2 各自的实现原理 3 自己的项目中如何使用 以下是个人的一些总结 仅供参考 1 IOC
  • java异常处理

    目录 异常概述与异常体系结构 常见异常2 数组下标越界异常 空指针异常 异常的运算 转换不兼容 异常处理机制一 异常处理机制二 手动抛出异常 用户自定义异常类 总结 异常概述与异常体系结构 在使用计算机语言进行项目开发的过程中 即使程序员把
  • 在winform中屏蔽双击最大化或最小化窗体(C#实现),禁用任务管理器结束程序

    在需要屏蔽双击窗体最大化 最小化 关闭 拖拽窗体中写入以下代码 可以根据需要取舍代码 protected override void WndProc ref Message m if m Msg 0x112 switch int m WPa
  • 数组方法对字符串使用时,需要注意的地方

    在平时工作或者练习的时候 我们有时会使用数组的方法去处理字符串 在使用时 我们可以发现有些方法可以对字符串使用 但是有一些不能 那么 这个规律究竟是什么 为什么有的可以使用 而有的不能使用 那些不能使用的原因是什么 分析思路 我们可以看到
  • 程序员到底要怎么找女朋友?

    漫小话碎碎念 新弄了个小专栏 以两三格漫画的形式给大家呈现一些只有程序猿才能看懂的梗 刚开始着手弄这个part 一切都还不太成熟 也欢迎大家在留言区提出一些建议 可以是一些梗 可以是形象整改 表达形式 都好 目前定在每周五发 毕竟工作了一周
  • windows驱动程序开发初探

    最近 由于需求推动 自己得开始学一下在windows下如何开发驱动程序 虽然 后来由于其他的原因使得学习没继续下去 但是我还是把一些粗略的学习经历与体会写在这里 方便自己日后卷土重来 也方便其他的对windows开发一窍不通的有志之士参考一
  • IP地址判断有效性

    IP地址判断有效性 标签 空格分隔 OJ 算法 1 题目 判断输入的字符串是不是一个有效的IP地址 详细描述 请实现如下接口 boolisIPAddressValid constchar pszIPAddr 输入 pszIPAddr 字符串
  • 基于选择排序的一些想法

    选择排序的工作原理是 每一次从待排序的数据中选出最小 或最大 的一个元素 存放在序列的起始位置 然后 再从剩余未排序元素中继续寻找最小 大 元素 放到已排序序列的末尾 以此类推 直到全部待排序的数据元素排完 优化思路是 每次循环都同时找出最
  • Elasticsearch之聚合aggregations

    聚合可以让我们极其方便的实现对数据的统计 分析 例如 什么品牌的手机最受欢迎 这些手机的平均价格 最高价格 最低价格 这些手机每月的销售情况如何 实现这些统计功能的比数据库的sql要方便的多 而且查询速度非常快 可以实现实时搜索效果 1 基
  • Paimon 学习笔记

    本博客对应于 B 站尚硅谷教学视频 尚硅谷大数据Apache Paimon教程 流式数据湖平台 为视频对应笔记的相关整理 1 概述 1 1 简介 Flink 社区希望能够将 Flink 的 Streaming 实时计算能力和 Lakehou
  • Docker boot2docker镜像默认用户和密码

    用户 密码 进入方式 docker tcuser ssh root command sudo i docker用户下执行
  • 记录一个iOS实现视频分片缓存拖拽快进不能播放的问题

    代码现状 首先来看一下我们将视频数据塞给请求的代码 void finishLoadingWithLoadingRequest IdiotResourceTask task printf 哈哈执行到这里执行到到这里 n printf 哈哈哈数
  • 【目标检测-YOLO】YOLOv5-5.0v-损失函数(第四篇)

    YOLO Input Backbone Neck Head 置信度Loss 坐标回归Loss 分类Loss v1 448 448 GoogleNet FC 2 MSE v2 32x D
  • mod_jk 分析

    mod jk 分析 1 mod jk 模块的总体功能 由于 tomcat 的 HTTP 处理部分都由 Java 所写 5 5 12 版本以后出现了 native 库 用以 提高其 I O 和 SSL 的性能 1 在高并发的情况下负载较高 而
  • 误解#define GPIOA ((GPIO_TypeDef *) GPIOA_BASE)

    define GPIOA BASE AHB1PERIPH BASE 0x0000 typedef struct IO uint32 t MODER lt GPIO port mode register Address offset 0x00
  • python+opencv最简单的人脸识别入门

    0前置操作 安装python 最新3 10即可 安装pycharm 社区版即可 安装opencv python cmd输入pip install opencv python即可 嫌慢用国内镜像也可以 后续也需要安装opencv contri
  • 利用Scrum敏捷工具管理敏捷产品迭代Sprint Backlog

    什么是Sprint Backlog Sprint Backlog是Scrum的主要工件之一 在Scrum中 团队按照迭代的方式工作 每个迭代称为一个Sprint 在Sprint开始之前 PO会准备好产品Backlog 准备好的产品Backl
  • 数据本地存储方法

    存储到本地的数据类型有 数组 字典 字符串 对象类型的 1 字符串的本地存储 NSString str dsadasd NSArray arr NSSearchPathForDirectoriesInDomains NSLibraryDir