位置: 编程技术 - 正文

[置顶] 【Android与iOS开发对比系列】之 数据存储(置顶在线)

编辑:rootadmin
【Android与iOS开发对比系列】之 数据存储

推荐整理分享[置顶] 【Android与iOS开发对比系列】之 数据存储(置顶在线),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:置顶在线,置顶是干什么用的,置顶在线,置顶方式小说,置顶是啥,置顶方式小说,置顶txt,置顶是啥,内容如对您有帮助,希望把文章链接给更多的朋友!

写在前面的话

相比Android和iOS,我觉得Android的数据存储更开放一些。Android天生就可以使用多Java I/O;并且天生开放的特性,开发者可以直接在SD卡中读写文件,自由度比较高。缺点吗,也是因为太开放,所以Android的相册和文件夹都惨不忍睹。

Android本身自带Java的反射和注解,很早就有了ORM数据库。这里解释一下,ORM就是 Object Relation Mapping, 对象关系映射。 通过建立对象来生成数据库字段,大大简化了代码。

Android的ORM我用过 GreenDao 和 ActiveAndroid , GreenDao需要写Java项目来生成,而且lib包也比较多。后来我用ActiveAndroid,类似于Ruby的ORM存储方式,用起来比较顺手。

IOS有Core Data, 但是用起来比较复杂。我一开始是直接使用 FMDB ,因为是SQLite的封装,还需要写SQLite代码,写起来还是比较麻烦。 当然,现在有了 MagicalRecord ,类似ORM数据库的Core Data封装, 能简化不少代码。

Android的4种数据存储方式1 使用SharedPreferences存储数据;

SharedPreferences是用来存储一些Key/Value类似的成对的基本数据类型。

它只能存储基本数据类型,也即int, long, boolean, String, float。

IOS相对的就是NSUserDefaults;

下面是示例代码:

SharedPreferences是采用了XML格式将数据存储到设备中,在DDMS中的File Explorer中的/data/data//shares_prefs下.

SharedPreferences同样是沙盒机制:只能在同一个包内使用,不能在不同的包之间使用。

2 文件存储数据;Internal Storage内部存储空间

这里是指手机内置的存储空间,称为内部存储。使用内部存储主要有二个方式,一个是文件操作,一个是文件夹操作.

Context提供了两个方法来打开数据文件里的文件IO流

Context还提供了如下几个重要的方法:

Context.openFileOutput(String fileName, int mode)生成的文件自动存储在/data/data/Package Name/files目录下,其全路径是/data/data/Package Name/files/fileName 。 注意下,这里的参数fileName不可以包含路径分割符(如”/”).

内部存储空间应该用来保存比较重要的数据,apk被卸载时,apk在内部存储空间的文件数据将被删除。

示例代码:

External Storage外部存储空间

就是读写sdcard上的文件

其中读写步骤按如下进行:

1 调用Environment的getExternalStorageState()方法判断手机上是否插了sd卡,且应用程序具有读写SD卡的权限,如下代码将返回true

Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)

2 调用Environment.getExternalStorageDirectory()方法来获取外部存储器,也就是SD卡的目录,或者使用”/mnt/sdcard/”目录

3 使用IO流操作SD卡上的文件

需要权限:

[置顶]
        【Android与iOS开发对比系列】之 数据存储(置顶在线)

示例代码:

3 SQLite数据库存储数据;

这里不详细说了,SQLite3都是通用的。可以参考学习:w3school, 我iOS写SQLite关系表把这个又学了一遍。

简单代码如下:

4 使用ContentProvider存储数据;

Android内置的许多数据都是使用ContentProvider形式,供开发者调用的(如视频,音频,图片,通讯录等),可以向其他应用共享其数据。

我以前使用过ContentProvider和SQLiteDatabase CursorLoader相结合的方式,github地址。

这里代码就不详细介绍了。

补充

Preference,File, DataBase这三种方式分别对应的目录是 /data/data/Package Name/Shared_Pref, /data/data/Package Name/files, /data/data/Package Name/database

iOS的5种数据存储方式

iOS都是沙盒存储,数据都在app的目录下。

1 NSUserDefaults

与Android的SharedPreferences原理相同。

NSUserDefaults可以存储的数据类型包括:NSData、NSString、NSNumber、NSDate、NSArray、NSDictionary

保存数据:

读取数据:

2 NSKeyedArchiver归档

采用归档的形式来保存数据,该数据对象需要遵守NSCoding协议。

对象对应的类必须提供encodeWithCoder:和initWithCoder:方法。对对象进行编码和解码。

下面的例子是从这篇博客中看到的: SQLite

这个不多说了,我具体就是直接看FMDB的文档。

4 CoreData

简述一下 Core Data数据持久化是对SQLite的一个升级,它是ios集成的.

我们在CoreData中使用的几个类。 1 NSManagedObjectModel(被管理的对象模型) 相当于实体,不过它包含 了实体间的关系

2 NSManagedObjectContext(被管理的对象上下文) 操作实际内容 作用:插入数据 查询 更新 删除

3 NSPersistentStoreCoordinator(持久化存储助理) 相当于数据库的连接器 4 NSFetchRequest(获取数据的请求) 相当于查询语句

5 NSPredicate(相当于查询条件) 6 NSEntityDescription(实体结构) 7 后缀名为.xcdatamodel的包

示例代码,封装好的CoreData管理类CoreDataManager.h:

5 Plist

Plist (NSArrayNSDictionary) 也可以来存储数据。

全名 Property List,属性列表文件,它是一种用来存储串行化后的对象的文件。属性列表文件的扩展名为.plist ,因此通常被称为 plist文件。文件是xml格式的。

详细可参考

版权声明:本文为博主原创文章,未经博主允许不得转载。

sed + grep 解决 Android docs 打开慢的问题 cd进入docs所在目录,然后执行下列语句sed-i's/scriptsrc="

使用Kotlin开发Android应用(II):创建新工程 使用Kotlin开发Android应用(II):创建新工程@authorASCE的Github简书微博CSDN原文链接在基本了解什么是Kotlin以及Kotlin可以做什么之后,接下来就到了配置A

给EditText的drawableRight属性的图片设置点击事件 这个方法是通用的,不仅仅适用于EditText,也适用于TextView、AutoCompleteTextView等控件。Google官方API并没有给出一个直接的方法用来设置右边图片的点击事

标签: 置顶在线

本文链接地址:https://www.jiuchutong.com/biancheng/370876.html 转载请保留说明!

上一篇:Android 转换UTC时间:2013-06-13T14:15:44.000的时间格式 为GMT时间(androidtime)

下一篇:sed + grep 解决 Android docs 打开慢的问题(sed配合grep)

  • 金税盘服务费全额抵扣
  • 跨省异地购买房产对外销售
  • 自有住房出租
  • 小规模要交增值税怎么计提
  • 双定户经营所得用申报吗
  • 一般纳税人增值税可以抵扣吗
  • 公款私存个人账户怎么处理
  • 停车费定额发票税率
  • 建筑公司办公室照片真实
  • 报税中反写是什么意思
  • 小规模缴纳增值税税控系统可以抵扣么
  • 事业单位下属企业员工转事业编
  • 增值税免税是否计入营业外收入
  • 车辆购置税计税依据包括消费税吗
  • 机动车销售发票可以跨年抵扣吗
  • 增值税认证逾期怎么处理
  • 公益性捐赠会计分录金额
  • 企业助学捐款分录怎么写
  • 收到理财产品收益分录
  • 软件开发服务费可以计入无形资产吗
  • 新公司不核税可以吗
  • 房租发票进项税可以抵扣吗
  • 上海电商行业怎么样
  • 普票和专票的税率分别是多少
  • 没有ca证书怎么办社保
  • 委托加工物资的消费税
  • 客户忠诚度的表现行为有哪些
  • 税法对弥补亏损的规定是什么?
  • 六月工资七月发算不算压工资
  • 微信提现收取手续费多少钱
  • windows预览体验计划选哪个渠道
  • 厂房租金计入什么费用部门
  • 单位办事人员
  • 企业注销时实收资本需要交税吗
  • 辅助生产成本包含哪些
  • 会计账与银行账不符怎么调整
  • 其他应收和其他应付可以共用吗
  • 股东分红会计分录摘要
  • yolov3目标检测步骤流程图
  • 最全vue项目实战
  • 视觉slam ba
  • c++图像二值化
  • 哪些税金不需要通过应交税费科目核算
  • python访问字符串
  • Windows上PostgreSQL安装配置教程
  • 本年缴纳上年的所得税填年报
  • 固定资产减值准备可以转回吗
  • 计提工资 个人所得税
  • 员工福利开的专票怎么做分录
  • 进项抵扣项目
  • 固定资产计提折旧是什么意思
  • 逾期交房违约金 已支付金额
  • 用银行存款支付本季度短期借款利息
  • 事业单位基建账套会计科目
  • 对于成员单位归集至集团母公司账户的资金
  • 货物赔偿款怎么做账
  • 企业注销时实收资本清算时要作资产处置收益交所得税吗
  • 暂估入库做账
  • 制造费用是借还是贷
  • 建筑公司没有资质可以注册建造师吗
  • sqlserver 教程
  • 安装Win8 64位旗舰版系统提示“windows无法安装到这个磁盘”的故障分析及解决方法
  • 多台电脑ip地址设置
  • Windows Server core的便捷操作和远程管理
  • win8无法连接wifi
  • iphone os
  • unix系统采用什么结构
  • 四个版本的雪国开头翻译
  • ml命令
  • 安卓手机root后更流畅吗
  • bat批处理执行cmd命令
  • 简略说明本岗位最高风险的防范措施和现场处置方案
  • linux中gzip的用法
  • javaweb开发技术有哪些
  • 简述javascript中的函数
  • js所有知识点
  • 税务局举报管理办法
  • 生产变压器设备
  • 上善若水 宁静致远,适合小学标语吗?
  • 税务系统全面从严
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设