FOMapping 是 c.cgus 的 SQLite Objective-C 封装 FMDB 的简单 ORM(对象关系映射)扩展。《FMDB 很棒,但是拥有一些代表我们在数据库中所拥有的对象实例会更方便。
当我在处理 SQLite 时,使用此项目开发我的 iOS 应用。如果您遇到任何问题,请让我知道。
假设你有一个名为 Batter 的表格,记录一些棒球运动员的击打数据。
CREATE TABLE batter (
name TEXT NOT NULL,
avg REAL,
hr INTEGER,
birth REAL,
position BLOB,
PRIMARY KEY(name)
);
然后您只需创建一个继承自 FOObject 类的类。
#import "FOObject.h"
@interface Batter : FOObject
@property (nonatomic, copy) NSString *name;
@property (nonatomic, assign) double avg;
@property (nonatomic, assign) NSInteger hr;
@property (nonatomic) NSData *birth;
@property (nonatomic) NSData *position;
@end
并确保以下操作发生:
FMResultSet *rs = [db executeQuery:@"SELECT * from batter"];
while ([rs next]) {
Batter *batter = [Batter objectWithResultSet:rs];
if ([batter.name isEqualToString:@"Lin"]) {
batter.avg = 0.300;
batter.hr = 20;
batter.birth = [NSDate dateWithTimeIntervalSinceNow:500515200];
break;
}
else if ([batter.name isEqualToString:@"Hu"]) {
[batter remove:db];
break;
}
}
Batter *newBatter = [[Batter alloc] init];
newBatter.name = @"Kao";
newBatter.avg = 0.35;
newBatter.hr = 30;
newBatter.birth = [NSDate dateWithTimeIntervalSinceNow:496540800];
[newBatter save:db];
有时我们需要存储一个没有对应类的临时查询结果。这时可以使用 NSDictionary。
FMResultSet *rs = [db executeQuery:@"select name as name1, avg as avg1, hr as hr1 from batter;"];
NSArray *results = [[NSMutableArray allolc] init];
while ([rs next]) {
[results addObject:[FOObject dictionaryWithResultSet:rs]];
}
这就完成了。很高兴您投入了宝贵的时间。