在绝大部分情况下,我们软件所使用的、所产生的数据,终将储存在数据库中。ValueObject,可以说是对数据库表的一种抽象。下面以“猜城市”为例,简单讲述下我是如何处理这种数据结构的。
-
首先,数据库(SQLite)创建这么一张表:
它包含数据主键ID、城市名称、城市简称、城市图片名称四个字段。
创建SQL语句如下
create table city(cityid integer primary key, name text, simplename text, imagename text)
- 其次,我们将其转化成ValueObject:
#import <Foundation/Foundation.h>
@interface CityVO : NSObject
@property (nonatomic) int cityID;
@property (copy, nonatomic) NSString* name;
@property (copy, nonatomic) NSString* imageName;
@property (copy, nonatomic) NSString* simpleName;
- (id)init;
- (id)initWithID:(int)cityid WithName:(NSString*)cityname WithSimpleName:(NSString*)simplename WithImageName:(NSString*)imagename;
@end
可见,这个类中“至少”包含了对应数据表中的所有字段。当然,我们可以添加其他属性(比如说主子表);我们也可以添加其他方法(比如说获取表名findTableName)。
- 最后,我们实现一个类,对这个VO进行数据操作:
#import <Foundation/Foundation.h>
#import "CityVO.h"
@import UIKit;
@interface CityDAO : NSObject
- (NSMutableArray<CityVO*>*)getCityDB;
- (CityVO*)getCityByID:(int)cityid;
- (UIImage*)getIamgeFromCity:(CityVO*)cityVO;
@end
这个类中实现了三个基本方法:获取所有城市的数据、通过城市ID获取数据、通过VO获取城市图片。具体的实现方法,请看<a href="http://www.jianshu.com/p/2d00e8af498f/">SQLite简单运用</a>。