(译)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 ...
随机推荐
- oracle 10g函数大全--数值型函数
ABS(x) [功能]返回x的绝对值 [参数]x,数字型表达式 [返回]数字 [示例] select abs(100),abs(-100) from dual; sign(x) [功能]返回x的正负值 ...
- VB6.0中数组的定义实測
作者:iamlasong 1.环境 Visual Basic 6.0精简版,由于仅仅做一些小工具,认为这个已经够了.我认为.编程语言.数据库等东西,不一定要用最新的,适合.够用就好,比方Win8都出来 ...
- 【Python】装饰器实现日志记录
好的日志对一个软件的重要性是显而易见的.如果函数的入口都要写一行代码来记录日志,这种方式实在是太低效了,但一直没有找到更好的方法.后来用python写一些软件,了解到python的装饰器功能时,突然人 ...
- Spring集成ActiveMQ配置 --转
转自:http://suhuanzheng7784877.iteye.com/blog/969865 集成环境 Spring采用2.5.6版本,ActiveMQ使用的是5.4.2,从apache站点可 ...
- HTTP常用端口号与对应的服务说明
常用端口号与对应的服务以及端口关闭 端口简介:本文介绍端口的概念,分类,以及如何关闭/开启一个端口 21端口:21端口主要用于FTP(File Transfer Protocol,文件传输协议)服务. ...
- Java I/O操作汇总
作者:卿笃军 原文地址:http://blog.csdn.net/qingdujun/article/details/41154807 本文简绍解说了FileWriter.FileReader.Buf ...
- 算法笔记_085:蓝桥杯练习 9-3摩尔斯电码(Java)
目录 1 问题描述 2 解决方案 1 问题描述 问题描述 摩尔斯电码破译.类似于乔林教材第213页的例6.5,要求输入摩尔斯码,返回英文.请不要使用"zylib.h",只能使用 ...
- js设置百分比保留两位小数
CreateTime--2017年8月23日11:03:31Author:Marydon js设置百分比保留两位小数 错误用法: var percent = (num1/num2) * 100%; ...
- flashback database(drop tablespace)
1.首先记录时间 select to_char(systimestamp,'yyyy-mm-dd HH24:MI:SS') from dual;--2014-04-25 13:55:48 查看表sel ...
- Linux命令-网络命令:setup
setup 进入设置网络信息的界面 上图中选“网络配置”进入设置网络信息 上图中选“设备配置”进行配置IP地址,下图显示网卡信息 上图中,选择“eth0”回车进入设置eth0网卡信息界面 上图中选择“ ...