我负责存储部分,要先思考两个存储问题:数据本地存储方案,和数据云端存储方案。

由于这是个UGC App,内容需要在本地存储以提供流畅的操作体验,还要同步到云端以保证数据不丢失,还要能在用户的多个设备之间同步。

1,云端存储方案。

因为是EverNote的铁杆用户,所以计划保存到EverNote,今天突然想为什么不试试iCloud呢?

从苹果开发者网站下载两个介绍iCloud编程的视频,对它有了大概了解:

  • 1,主要解决多个设备之间同步数据的问题,而不是为解决数据永久性存储问题(当然也支持永久性存储)。
  • 2,从iOS5.1开始支持。
  • 3,每个用户有免费的5G空间。
  • 4,支持Key/Value和文件方式的存储,对于文件方式的存储,当文件发生改变时,仅同步传输改变的部分,这点很像rsync。
  • 5,可以跟App无缝集成,以消息方式通知App数据是否需要有改变,以及哪些数据改变了。

这么多优点,把EverNote甩出两条街,做iOS开发的人,如果不用iCloud做云存储,那就太暴殄天物了,原因如下:

  • 1,无需额外注册,使用AppleID即可辨识用户,用iOS设备的人,基本都有AppleID,除非越狱用户,但我的App不是给他们设计的。
  • 2,跟iOS系统集成的好,以消息通知方式处理数据同步,开发更简单。
  • 3,5G的免费空间,对于小数据量App来说足够了。
  • 4,如果用户需要更大的空间,付费买空间即可,这也是Apple愿意看到的结果。所以使用iCloud能达到用户、开发者、Apple三方共赢。

2,本地存储方案。

之前做的几个App都使用本地文件的方式存储数据,因为:

  • 1,数据量小,基本都是配置类型数据。
  • 2,要存储的数据都是NSArray、NSDictionary、NSData一类的对象,可以通过writeToFile和initWithContentsOfFile跟文件打交道。
  • 3,App启动时所有数据就会加载到内存。
  • 4,不需要同步到云端。

正在做的App恰好这几点都不具备:数据量日积月累下可能会达到数千条,还有大量小文件需要同步到云端,需要做本地数据搜索。

同事之前推荐过SQLite,于是找了个例程看了看,决定使用SQLite,原因如下:

  • 1,接口简单,使用门槛低。
  • 2,数据库采用本地文件方式存储,可以不加修改的同步到iCloud。
  • 3,SQL搜索方便,不需要学习额外的知识,可以快速开发出产品原型。

明天开始放端午节小长假,今晚看捷克VS葡萄牙的欧洲杯1/4决赛,看完再睡一觉就到十点了,接下来再学习下iCloud API(文档+视频),把用法搞清楚。

转载于:https://www.cnblogs.com/tara/archive/2012/06/21/2558027.html

EverBox开发笔记-1相关推荐

  1. EverBox开发笔记-4-如何使用Core Data

    在这里有篇新手教程,教你怎么在iOS中使用Core Data. 教程写的不错,非常详细, 通过这个例子,可以看到在iOS下使用Core Data存储结构化数据是多么容易,Core Data隐藏了数据存 ...

  2. EverBox开发笔记-3-iCloud Document Storage

    原想将数据存到SQLite数据库中(沙盒中的文件),再将SQLite数据库文件上传到iCloud,于是需要学习iCloud存储文件对象的方法. 一,能直接将SQLite文件保存到iCloud吗? 答案 ...

  3. EverBox开发笔记-2-iCloud-KeyValueStore

    下午抽了点时间,测试了下iCloud的Key/Value Store,主要用到NSUbiquitousKeyValueStore: 获取实例对象: NSUbiquitousKeyValueStore ...

  4. 运维开发笔记整理-前后端分离

    运维开发笔记整理-前后端分离 作者:尹正杰  版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.为什么要进行前后端分离 1>.pc, app, pad多端适应 2>.SPA开发式的流 ...

  5. iOS开发笔记-两种单例模式的写法

    iOS开发笔记-两种单例模式的写法 单例模式是开发中最常用的写法之一,iOS的单例模式有两种官方写法,如下: 不使用GCD #import "ServiceManager.h"st ...

  6. 【Visual C++】游戏开发笔记十三 游戏输入消息处理(二) 鼠标消息处理

    本系列文章由zhmxy555编写,转载请注明出处. http://blog.csdn.net/zhmxy555/article/details/7405479 作者:毛星云    邮箱: happyl ...

  7. 【Visual C++】游戏开发笔记二十七 Direct3D 11入门级知识介绍

    游戏开发笔记二十七 Direct3D 11入门级知识介绍 作者:毛星云    邮箱: happylifemxy@163.com    期待着与志同道合的朋友们相互交流 上一节里我们介绍了在迈入Dire ...

  8. Android移动APP开发笔记——最新版Cordova 5.3.1(PhoneGap)搭建开发环境

    引言 简单介绍一下Cordova的来历,Cordova的前身叫PhoneGap,自被Adobe收购后交由Apache管理,并将其核心功能开源改名为Cordova.它能让你使用HTML5轻松调用本地AP ...

  9. 安卓开发笔记——自定义广告轮播Banner(实现无限循环)

    关于广告轮播,大家肯定不会陌生,它在现手机市场各大APP出现的频率极高,它的优点在于"不占屏",可以仅用小小的固定空位来展示几个甚至几十个广告条,而且动态效果很好,具有很好的用户& ...

最新文章

  1. OracleDesigner学习笔记1――安装篇
  2. 不愧是你!Python 之父退休太无聊,进微软搞开源!
  3. wireshark 配 filddler 手机抓包
  4. WIN32 多线程吃字母练习
  5. 如何在Android Studio里关掉instant run
  6. 机器学习中目标函数、损失函数以及正则项的通俗解释
  7. 如何快速下载CentOS7镜像
  8. java继承矩形例子代码_Java代码实现矩形覆盖实例
  9. MAC完全卸载/删除Parallels Desktop虚拟机和PD虚拟机文件的方法
  10. picasa图片编辑器_如何将iPhone图片和电影导入Picasa
  11. 噪声调相干扰matlab程序,噪声调相干扰信号的性能仿真
  12. 基于OpenCV的在图片上画刻度尺坐标、分划版、侧微尺、十字双边带刻度
  13. 【coq】函数语言设计 笔记 07 - indProp
  14. 平均年薪40万!为什么却很少见程序员炫富?
  15. Embedded Browser WindowsPC内嵌网页
  16. 一步一回头撞在了南墙上
  17. 冷数据、温数据、热数据,难道数据也是有温度的?
  18. Nwafu-Oj-1444 Problem l C语言实习题七——2.结构体数组的定义与引用
  19. 启动2015世界人工智能系统智商排名,检测人工智能是否超越人类
  20. Python调用Gurobi基本操作

热门文章

  1. [SDOI2012]拯救小云公主【bfs+二分答案】
  2. 敏之澳分享拼多多的宝贝标题要怎么写?
  3. 使用Cookie记住多个登录账号!
  4. n维椭球体积公式_初中化学知识点:物质的量及其计算公式
  5. 机械革命无法使用U盘启动linux,机械革命u盘启动,详细教您机械革命bios怎么设置u盘启动...
  6. 散列函数设计:除留余数法
  7. 1124——Vue+SpringBoot+Mybatis的简单员工管理项目
  8. 电脑里文件消失了,存储内存还占用着,怎么办?
  9. 哪个城市是中国的经济人口重心?
  10. 小白一键系统重装系统GHO文件如何下载教程