-
Notifications
You must be signed in to change notification settings - Fork 0
FFDB关于可自定义的内容
Fidetro edited this page Oct 20, 2017
·
3 revisions
关于可自定义的内容都在FFDataBaseModel+Custom
类中
还是用这个类做演示
@interface FFStore : NSObject
/** 店铺名字 **/
@property(nonatomic,copy) NSString *name;
/** 店员总数 **/
@property(nonatomic,assign) NSInteger memberCount;
/** 商店说明 **/
@property(nonatomic,copy) NSString *desc;
/** 商店别名(额外的属性,不需要存储到数据库中) **/
@property(nonatomic,copy) NSString *nickname;
@end
很多情况下,ORM模型会直接拿到去处理逻辑,但是有可能需要增加额外的属性,但是不需要存储到数据库中,这时候就需要在对应的ORM模型类中重写+ (NSArray *)memoryPropertys;
方法
@implementation FFStore
+ (NSArray *)memoryPropertys
{
return @[@"nickname"];//假设我们不需要nickname这个字段
}
@end
FFDB所有的字段属性都是默认TEXT
,如果你有需要修改字段情况,也是可以通过重写子类的 + (NSDictionary *)columnsType;
方法来实现
@implementation FFStore
+ (NSDictionary *)columnsType
{
return @{@"memberCount":@"Integer"};
}
@end
FFDB是通过runtime获取类的属性,根据类的属性名设置表的字段名字的,如果需要自定义字段名字,可以通过重写子类+ (NSDictionary *)customColumns;
的方法实现
+ (NSDictionary *)customColumns
{
return @{@"desc":@"description"};
}
同理表名也是根据类名设置,同时会在类名前面加上FID,想要去掉这个前缀可以在FFDataBaseModel+Custom.m
中找到kDatabaseHeadname
这个常量,修改即可,如果需要自定义表名,可以通过重写子类+ (NSString *)tableName;
的方法实现
+ (NSString *)tableName
{
return "Store";
}