(译)Getting Started——1.3.1 Incorporating the Data(合并数据)
在实现完应用的行为后,需要创建数据模型来支撑应用的界面。应用的数据模型定义了应用中数据的维护方法。数据模型可以是一个基本的dictionary类型,也可以是复杂的数据库,范围很广。好的数据模型可以更为轻松的构建伸缩性强的应用,还可以提升功能,改变特性。
应用的数据模型由数据结构和(可选的)自定义的业务逻辑组成。你从来都没有想过要把数据模型和应用界面完全的剥离开。但是,你肯定有过这样的考虑:不依赖于某个视图或某个视图控制器,单独的实现数据模型。如果你保证了数据和界面的分离,那你就会发现,这样做更有助于实现一个通用的应用——既能在iPad上运行,又能在iPhone上运行——还有助于代码的重用。


设计数据模型
如果只是需要存储少量的数据,Foundation框架类就是最好的选择。因此,应该先查看下Foundation类里有什么可用的行为,而不是尝试着自己去实现。例如,如果应该只是需要保存一个字符串的列表,那么,使用NSArray和NSString就可以了。Foundation类的更多内容请参见Working with Foundation章节。
为了存储数据,如果数据模型需要自已的业务逻辑,那你应该自定义一个类,应该考虑如何把框架中已经存在的类合并到自己的类中实现。最好的办法是在自已的类中使用已经存在的框架类,而不是去重写它们。例如,自定义的类中或许使用NSMutableArry来存储信息——但是,你可以定义自己的元素来与这些数据交互。
在你设计数据模型时,你应该问自己以下的问题:
用户如何使用应用,你又需要存储哪种类型的数据?要确保你的模型反映了应用的内容和意图。即使用户与数据没有直接发生交互,但是,在界面和数据之间,也应该有清楚的相关性。无论你打算存储文本、文档、大图片,或是其它类型的信息,你总应该把数据模型设计的能适当的处理某种类型的内容。
使用哪种数据结构?确定在哪里可以使用框架的类,在哪里需要使用自定义功能的类。
如何给用户界面提供数据?你的数据模型不会直接与界面进行通信。为了处理数据模型与界面之间的交互,你需要在控制器里添加逻辑。
实现模型
在上一节教程中,你使用的是Objective-C编辑语言。尽管教程中讲述了如何构建一个简单的应用,但是,在写自己完整功能的应用之前,你应该熟悉编程时所使用的编辑语言。
有的人通过阅读 Programming with Objective-C这本书来学习理念,然后通过编写大量的测试应用来加深对语言的理解。还有些人,当他们还不了解该怎么做时,就直接开始编程了,一边编程,一边查资料。如果你更喜欢第二种方式,那你应该把 Programming with Objective-C这本书放在手边,把它当作参考资料。
开发首个数据模型最重要的目标是明白它是如何工作的。仔细的考虑你数据模型的结构,不要担心数据模型的好坏。在开始实现模型后,不要害怕模型的迭代和优化。
合并真正的数据
在你首次测试数据模型直到你确定框架装配和连接都是正确的过程中,你可能想做一些静态数据或假数据。现在测试做完了,我们就需要定义一个数据模型,你就可以从中摘取真正的数据了。
(译)Getting Started——1.3.1 Incorporating the Data(合并数据)的更多相关文章
- [译] Pandas中根据列的值选取多行数据
# 选取等于某些值的行记录 用 == df.loc[df['column_name'] == some_value] # 选取某列是否是某一类型的数值 用 isin df.loc[df['column ...
- [译]Vulkan教程(21)顶点input描述
[译]Vulkan教程(21)顶点input描述 Vertex input description 顶点input描述 Introduction 入门 In the next few chapters ...
- TEXT 15 A text a day...
TEXT 15 A text a day... Mar 24th 2006 From The Economist print edition The medical uses of mobile ph ...
- AFNetworking 3.0 源码解读 总结(干货)(上)
养成记笔记的习惯,对于一个软件工程师来说,我觉得很重要.记得在知乎上看到过一个问题,说是人类最大的缺点是什么?我个人觉得记忆算是一个缺点.它就像时间一样,会自己消散. 前言 终于写完了 AFNetwo ...
- 《MSSQL2008技术内幕:T-SQL语言基础》读书笔记(下)
索引: 一.SQL Server的体系结构 二.查询 三.表表达式 四.集合运算 五.透视.逆透视及分组 六.数据修改 七.事务和并发 八.可编程对象 五.透视.逆透视及分组 5.1 透视 所谓透视( ...
- [转]MySQL索引背后的数据结构及算法原理
摘要 本文以MySQL数据库为研究对象,讨论与数据库索引相关的一些话题.特别需要说明的是,MySQL支持诸多存储引擎,而各种存储引擎对索引的支持也各不相同,因此MySQL数据库支持多种索引类型,如BT ...
- 李洪强iOS经典面试题153- 补充
李洪强iOS经典面试题153- 补充 补充 有空就来解决几个问题,已经懒癌晚期没救了... UML 统一建模语言(UML,UnifiedModelingLanguage)是面向对象软件的标准化建模 ...
- 在 Azure HDInsight 中安装和使用 Spark
Spark本身用Scala语言编写,运行于Java虚拟机(JVM).只要在安装了Java 6以上版本的便携式计算机或者集群上都可以运行spark.如果您想使用Python API需要安装Python解 ...
- MySQL索引背后的数据结构及算法原理
摘要 本文以MySQL数据库为研究对象,讨论与数据库索引相关的一些话题.特别需要说明的是,MySQL支持诸多存储引擎,而各种存储引擎对索引的支持也各不相同,因此MySQL数据库支持多种索引类型,如BT ...
随机推荐
- 从项目上一个子查询扩展学习开来:mysql的查询、子查询及连接查询
上面这样的数据,想要的结果是:如果matchResult为2的话,代表是黑名单.同一个softId,version,pcInfoId的代表是同一个软件,需要去重:同时,如果相同软件里面只要有一个mat ...
- Linux VSFTP服务器详细配置
Linux VSFTP服务器 1.开启服务 [root@localhost root]# service vsftpd start Starting vsftpd for vsftpd: ...
- 十招让Ubuntu 16.04用起来更得心应手
Ubuntu 16.04是一种长期支持版本(LTS),是Canonical承诺发布五年的更新版.也就是说,你可以让这个版本在电脑上运行五年!这样一来,一开始就设置好显得特别重要.你应该确保你的软件是最 ...
- SQL多表连接查询(具体实例)
本文主要列举两张和三张表来讲述多表连接查询. 新建两张表: 表1:student 截图例如以下: 表2:course 截图例如以下: (此时这样建表仅仅是为了演示连接SQL语句.当然实际开发中我们 ...
- automake连载--Linux下使用automake入门
http://blog.csdn.net/shanzhizi/article/details/30246587 近来重要要总结一下automake的用法了,连载几篇网上已有的文章,以供参考. 作为Li ...
- 使用jsmin压缩javascript脚本
官方地址:http://www.crockford.com/javascript/jsmin.html 点击页下方的”zip file containing an MS-DOS.exe file“下载 ...
- 也谈编译 VS 解释
语言发展 计算机的硬件仅仅能识别0和1组成的机器指令,而机器指令是最主要的计算机语言,可是我们平时进行程序设计时肯定不会用机器语言来编程,由于用它的效率低.更让人难以理解. 因此聪明的人类发明了汇编语 ...
- windows下安装UNO,配置AEROO_REPORT (Openoffice4已经升级为Python2.7.5版)
来自:http://shine-it.net/index.php?topic=8019.msg22007 最近单位要上一个OE,但OE7一天一个新更新,不知何年到头. 闲着没事写一点心得,不敢称为教程 ...
- HR*创建人员要素链接
HRMS(Human Resource Management System) --人员 per_people_f --人员分配 per_all_assignments_f --要素 DECLARE l ...
- 简单易懂的Dart》 - Dart语言中文简明教程
转自:https://www.blackglory.me/straightforward-dart/ Dart是Google公司发布的网络编程语言,其诞生的目的是为了让广大C类OOP程序员们克服Jav ...