从今天开始学习iOS开发(iOS版)实现一款App教程添加数据!.doc
文本预览下载声明
本教程以第二个教程(“教程:串联图”)中创建的项目为基础。您将用到从使用设计模式、使用 Foundation 以及编写自定类中学到的知识,在 ToDoList 应用程序中添加对动态数据的支持。
本教程讲述了以下操作:
使用常见的 Foundation 类
创建自定数据类
实现委托和数据源协议
在视图控制器之间传递数据
完成本教程中的所有步骤后,您的应用程序外观大致是这样的:
创建数据类
现在就开始吧,请在 Xcode 中打开您的现有项目。
目前,使用串联图的 ToDoList 应用程序有一个界面和一个导航方案。现在,是时候使用模型对象来添加数据储存和行为了。
应用程序的目标在于创建一个待办事项列表,因此首先您将创建一个自定类 XYZToDoItem 来表示单个待办事项。您应该记得,XYZToDoItem 类已经在编写自定类中讨论过。
创建 XYZToDoItem 类
1.选取“File”“New”“File”(或按下 Command-N)。
这时将会出现一个对话框,提示您为新文件选取模板。
2.从左侧的 iOS 下方选择“Cocoa Touch”。
3.选择“Objective-C Class”,并点按“Next”。
4.在“Class”栏中,在 XYZ 前缀后键入 ToDoItem。
5.从“Subclass of”弹出式菜单中选取“NSObject”。
如果您完全按照本教程操作,那么在这个步骤之前,“Class”标题可能是 XYZToDoItemViewController。选取 NSObject 作为“Subclass of”后,Xcode 会知道您创建了一个正常的自定类,并移除了它先前添加的 ViewController 文本。
6.点按“Next”。
7.存储位置默认为您的项目目录。此处无需更改。
8.“Group”选项默认为您的应用程序名称“ToDoList”。此处无需更改。
9.“Targets”部分默认选定您的应用程序,未选定应用程序的测试。好极了,这些都无需更改。
10.点按“Create”。
XYZToDoItem 类很容易实现。它具有项目名称、创建日期,以及该项目是否已完成等属性。继续将这些属性添加到 XYZToDoItem 类接口。
配置 XYZToDoItem 类
1.在项目导航器中,选择 XYZToDoItem.h。
2.将以下属性添加到该接口,使声明如下所示:
@interfaceXYZToDoItem:NSObject@propertyNSString*itemName;@propertyBOOLcompleted;@property(readonly)NSDate*creationDate;@end检查点:通过选取“Product”“Build”(或按下 Command-B)来生成项目。尽管该新类尚未实现任何功能,但是生成它有助于编译器验证任何拼写错误。如果发现错误,请及时修正:通读编辑器提供的警告或错误,然后回顾本教程中的说明,确保所有内容与此处的描述相符。
载入数据
您现在有一个类,可以用它作为基础来为单个列表项目创建并储存数据。您还需要保留一个项目列表。在 XYZToDoListViewController 类中跟踪此内容较为合适,视图控制器负责协调模型和视图,所以需要对模型进行引用。
Foundation 框架有一个 NSMutableArray 类,很适合跟踪项目列表。此处必须使用可变数组,这样用户就可以将项目添加到数组。因为不可变数组 NSArray 在其初始化后将不允许添加项目。
要使用数组,您需要声明并创建它。可以通过分配并初始化数组来完成。
要分配并初始化数组
1.在项目导航器中,选择 XYZToDoListViewController.m。
由于项目数组是表格视图控制器的实现细节,所以应该在 .m 文件中进行声明,而不是 .h 文件。此操作可让项目数组成为您自定类的私有数组。
2.将以下属性添加到接口类别中,它是由 Xcode 在您的自定表格视图控制器类中创建的。声明应该是这样的:
@interfaceXYZToDoListViewController()@propertyNSMutableArray*toDoItems;@end3.在 viewDidLoad 方法中分配并初始化 toDoItems 数组:
-(void)viewDidLoad{[superviewDidLoad];self.toDoItems=[[NSMutableArrayalloc]init];}viewDidLoad 的实际代码中有一些附加行被注释掉了,那些行是 Xcode 创建 XYZListViewController 时插入的。保留与否都没有影响。
现在,您已经拥有了一个可以添加项目的数组。
显示全部