Skip to content

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";
}
Clone this wiki locally