- 1、本文档共10页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
从零开始学iOS7开发系列教程事务管理软件开发实战Chapter12.pdf
从零开始学iOS7开发系列教程-事务管理软件开发实战-Chapter12
版权声明:
原⽂及⽰例代码来⾃raywenderlich store中的iOS Apprentice 系列2教程,经过翻译和改编。
版权归原作者所有,本系列教程仅供学习参考使⽤,感兴趣的朋友建议购买原教程(http://
/store/ios-apprentice)。
版本说明:
为了保证与时俱进,⺫前采⽤的开发环境是:Xcode 5.1 beta2 + iOS7.1beta2
欢迎继续我们的学习。
回过头来看看,在短短11章的内容中,我们已经接触了iOS开发的很多重要知识点。相信在本系列
教程完成后,我们就可以⾃豪的宣传⾃⼰对于iOS开发算是真正的⼊⻔了。
⺫前来说,对于⽤户新添加到列表中的事项,只要退出应⽤就会⾃动消失。我们也可以尝试删除或
修改列表中的五个默认事项。不过⼀旦重新启动应⽤,我们所做的⼀切似乎从未发⽣过。显然真实
世界中的应⽤不应该也不可能是这样来运作的。
感谢iOS新的多任务特性,现在当我们关闭某个应⽤的时候它会驻留在内存中。虽然它会进⼊某种类
似休眠的状态,但所有的数据信息仍然保持原貌。在正常情况下,⽤户永远不会终⽌某个应⽤,⽽
只是让它“悬停”在后台。不过在某些情况下,⽐如当iPhone内存不⾜的时候,iOS系统会⾃动清理掉
后台那些还在休眠的应⽤,从⽽清理出⼀些内存出来。⽽且在某些情况下,只要⽤户愿意,他们可
以⼿动kill掉后台中的应⽤,或者干脆reset整个设备。
显然将待办事项列表保留在内存中并不⾜以让它们永远活下去。因此,我们需要将数据保存在
iPhone的闪存存储空间的⽂件中。这就好⽐你在电脑上写⽂章的时候过⼀会⼉就要保存⼀下,只不
过iPhone应⽤应该具备⾃动保存的功能。没必要为此去⿇烦⽤户触碰某个Save按钮。
在上图中,左侧是没有数据持久保存的情况下,当某种情况(内存不⾜,⽤户⼿动kill掉后台的应⽤
等)发⽣时,⽤户所添加的数据会消失⽆影踪。⽽右侧则是有数据持久保存的情况,⽆论何时,⽤
户所添加的数据都会完好⽆损。
在接下来的这部分内容中,我们将要学习:
1.为了让代办事务清单中的事项可以持久保存,判断该把保存这些信息的⽂件放到⽂件系统的何
处。
2.当⽤户更改代办事项时(如添加⼀个新项⺫,开启/关闭勾选标志等),将待办事项保存到⽂件
中。
3.当应⽤重新启动时从该⽂件加载代办事项清单。
好了,⺫标已定,接下来就是该如何具体实现了。
iOS中的⽂件⺫录
iOS应⽤居住在⼀个与世隔绝的桃花源中,世⼈称之为“沙盒”。简单来说,每个应⽤都有⾃⼰的特定
⺫录⽤来保存⽂件和各类信息,但却不能访问其它应⽤的⺫录或⽂件。
想象⼀个庞⼤⽆⽐的虚拟世界,在这个世界中所有的居民都⽣活在⼀个名为“沙盒”的⼦系统中。作为
这个世界的⼀员,你可以通过沙盒和⺟系统进⾏交互,但却不能和任何⽣活在其它“沙盒” 中的居民直
接交流。这个貌似颇有些Matrix (⿊客帝国)的影⼦。
苹果之所以这样设计并⾮因为变态,⽽是为了安全考虑。通过这种沙盒机制,可以有效防⽌恶意软
件或者病毒的侵袭。相⽐Android系统来说,iOS系统在安全性能⽅⾯的确要技⾼⼀筹。因为任何⼀
个应⽤只能破坏沙盒中属于⾃⼰的⽂件,就不可能破坏系统其它的部分。
在iOS中,应⽤可以将⽂件保存在所谓的”documents” ⺫录中。⽽这个⺫录将永远⽣活在应⽤的沙盒
之中。当⽤户使⽤iTunes或iCould备份时,Documents⽂件中的⽂件也会被备份。当开发者发布了
⼀个新版本时,⽤户会安装更新内容,但Documents⽂件夹却依然完好⽆损。因此任何保存在该⽂
件中的数据可谓延年益寿不必时时刻刻战战兢兢被删除。
好吧,理论知识就这些,让我们看看如何具体操作。
打开Xcode,切换到ChecklistsViewController.m ,然后在viewDidLoad⽅法之后添加以下⽅法:
-(NSString*)documentsDirectory{
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,
NSUserDomainMask, YES);
NSString *documentsDirectory = [paths firstObject];
return documentsDirectory;
}
-
您可能关注的文档
- 【数盟2014.5.18上海聚会】基于SparkGraphx的大规模用户图计算和应用.pdf
- 【精校+详解】2011年全国中考物理试题分类汇编实验01探究光的直线传播反射和折射规律.doc
- 【系统仿真学报】多区域变风量空调系统神经网络预测控制研究.pdf
- 【系统仿真学报】煤气管道服役期预估神经网络模型的建立与应用.pdf
- 【综合体全案设计】楚雄兆顺第一城——有温度的商业综合体.pdf
- 【详解】嵌入式开发中固件的烧录方式v1.0.pdf
- 【阅享风控沙龙】【周三之夜专题讨论第二十二期】工程项目中的内部控制.pdf
- 一技术部无锡UG数控编程培训,加工中心模具编程技术.doc
- 一种CuxSiyO阻变存储器的温度特性与微观机制分析.pdf
- 一种交流负反馈组态的快速判断方法.pdf
文档评论(0)