jokxia / WZBaseModel

一个方便对象映射的BaseModel

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

WZBaseModel

简介

一个方便对象映射的BaseModel。

特性

  • 支持同时使用服务端和客户端的参数名来生成model,使用+ (NSDictionary *)dictionaryForServerAndClientKeys来返回一个服务端字段名与客户端属性名的字典。
  • 支持联合主键,+ (NSArray *)keyNames用来返回主键属性名的数组。
  • 支持通过NSDictionary来映射WZBaseModel,如果同主键的Model已存在,则使用NSDictionary中的值来替换原有Model的值,然后返回。
  • 支持KVO,对于主键相同的model,全局只存在一个实例,因此可以对其进行KVO,从而实现全局的数据同步。
  • 支持使用NSKeyedArchiverNSKeyedUnarchiver将model保存到NSUserDefaults,WZBaseModel已经覆写了- (void)encodeWithCoder:(NSCoder *)coder- (void)encodeWithCoder:(NSCoder *)coder方法。
  • 支持忽略服务端的冗余参数,如果不想总是看到不需要的Log警告,可以使用+ (NSArray *)banNames来返回要忽略的参数名数组。

示例

覆写+ (NSDictionary *)dictionaryForServerAndClientKeys,以便能使用服务端的字段名生成model。

+ (NSDictionary *)dictionaryForServerAndClientKeys
{
    return @{
             @"s_id"   : @"sid",
             @"s_name" : @"name",
             };
}

覆写+ (NSArray *)keyNames以便能使用KVO进行数据同步。

+ (NSArray *)keyNames
{
    return @[@"sid"];
}
Student *s1 = [Student modelFromDictionary:@{@"sid":@(1), @"name":@"John"}];
Student *s2 = [Student modelFromDictionary:@{@"sid":@(1), @"name":@"Tom"}];
    
if (s1 == s2) {
	NSLog(@"%@", s1.name);
}

s1s2指向同一个Student实例,将会输出Tom。

联系方式

新浪微博 @禁行线

Email: 123nobody@gmail.com

About

一个方便对象映射的BaseModel

License:MIT License