大橙子网站建设,新征程启航
为企业提供网站建设、域名注册、服务器等服务
之前项目中在展示用户数据的时候都是先直接从网络获取,然后再展示,之所以这样做而不将用户数据存储到本地再展示的原因是当时考虑到如果用户在其他设备上对该用户的数据进行了修改那么原来设备上用户信息的展示就会出错,还是从网络获取的数据可靠。(存储到本地同样能正确展示用户数据,只怪自己当初没深入思考过这个问题)
创新互联建站自2013年创立以来,先为额尔古纳等服务建站,额尔古纳等地企业,进行企业商务咨询服务。为额尔古纳企业网站制作PC+手机+微官网三网同步一站式服务解决您的所有建站问题。
先从网络获取用户数据再展示用户数据会有一个问题,由于网路请求数据是需要一定时间的,这样当我打开一个包含用户数据的页面的时候会有片刻时间无法看到用户的数据,尤其在这个页面包含用户头像的时候这个效果(闪屏)更加明显,给用户的体验不是很好。
我们可以在项目中创建一个存储用户信息的类,这个类可以将用户信息存储到本地,在展示用户数据的时候 先从本地去取数据 这样就不会有之前片刻时间看不到用户数据的闪屏效果, 再从网络上获取数据同时将数据存储到本地,再重复从本地取的操作(这样能保证数据是最新的,不会出错) 。
存储用户数据到本地有三个要点需要注意:
这个存储用户数据的类相当于一个中介,在从网络获取到数据时并没有直接去展示用户数据而是先将数据放到了中介中,在展示用户数据的时候再去这个存储了用户数据的中介中去取数据。
本篇文章到这里就结束了,愿大家加班不多工资多,男同胞都有女朋友,女同胞都有男朋友。????
iOS本地化存储的数据保存在沙盒中。
(1) Documents :iTunes会备份该目录。一般用来存储需要持久化的数据。
(2) Library/Caches :缓存,iTunes不会备份该目录。内存不足时会被清除,应用没有运行时,可能会被清除。一般存储体积大、不需要备份的非重要数据。
(3) Library/Preference :iTunes同会备份该目录,可以用来存储一些偏好设置。
(4) tmp : iTunes不会备份这个目录,用来保存临时数据,应用退出时会清除该目录下的数据。
获取沙盒文件:
其中:
可以把字典或数组直接写入到文件中。另外, NSString 、 NSData 、 NSNumber 等类型,也可以使用 writeToFile:atomically: 方法直接将对象写入文件中,只是 Type 为空。
NSUserDefaults是轻量级存储,一般使用它来进行一些设置的记录,比如用户ID,开关是否打开等设置,通过键值对的方式记录设置,所以这个有时候也被称为偏好设置。
NSUserDefaults可以存储的数据类型包括: NSData 、 NSString 、 NSNumber 、 NSDate 、 NSArray 、 NSDictionary 。如果要存储其他类型,则需要转换为前面的类型,才能用NSUserDefaults存储。
也可以写成宏定义
特点:只能存储OC常用数据类型(NSString、NSDictionary、NSArray、NSData、NSNumber等类型)而不能直接存储自定义模型对象。
定义一个类UserInfoModel,需遵守NSCoding协议
有时候我们需要查看类似 /private/var/mobile/Containers/Data/Application/... 路径下的文件,但是如果我们直接使用快捷键command+shift+G前往文件夹,发现找不到。。。
因为我们是要找的是iphone下的文件,可以使用以下方法查看:
如图1所示,点击Window→Devices and Simulators:
弹出图2界面,选中设备下安装的该App,然后点击“齿轮”按钮,选择“Download Container...”
简单的数据,对安全性要求不高的数据可以使用 NSUserDefaults (本质上是一个plist)来存储
相对复杂点的数据,可以使用coredata (本质上是使用sqlite 来存储)
对安全性要求较高的数据,可以使用keychain 来存储。
一般获取本地数据是从plist文件中读取JSON数据。
读取数据:
NSString *plistPath = [[NSBundle mainBundle] pathForResource:@"city" ofType:@"plist"];
NSArrary *cityArray = [[NSArray alloc]initWithContentsOfFile:plistPath];
这里的cityArray根据你存在plist中的数据类型来确定,如果plist中是字典类型,那么你这里需要使用NSDictionary去存储你从plist中获取到的数据。
至于本地存储数据的话根据你项目的具体功能来设计,一般的小型数据如用户昵称、手机号等使用NSUserDefault即可,但是如果是大量数据如账单类app中的账单数据那么此时需要考虑使用sqlite3去存储数据,至于密码之类就需要使用NSKeydArchiver去存储。