#import <UIKit/UIKit.h>
@protocol IQuery
@required
-(void) initclassdata:(NSDictionary *)dataDic;
@end
@interface IServicebase:NSObject<IQuery>
@end
#import <Foundation/Foundation.h>
#import "IServicebase.h"
#import <objc/runtime.h>
@implementation IServicebase
-(void) initclassdata:(NSDictionary *)dataDic{
if (dataDic == nil) {
return;
}
NSArray *kaylist = [dataDic allKeys];
for (NSString *kay in kaylist) {
if ([self getVariableWithClass:self.class varName:kay]) {
[self setValue:[dataDic objectForKey:kay] forKey:kay];
}
}
}
//判断是否包含一个属性
- (BOOL) getVariableWithClass:(Class) myClass varName:(NSString *)name{
unsigned int outCount, i;
Ivar *ivars = class_copyIvarList(myClass, &outCount);
for (i = 0; i < outCount; i++) {
Ivar property = ivars[i];
NSString *keyName = [NSString stringWithCString:ivar_getName(property) encoding:NSUTF8StringEncoding];
keyName = [keyName stringByReplacingOccurrencesOfString:@"_" withString:@""];
if ([keyName isEqualToString:name]) {
return YES;
}
} return NO;
}
@end
上述俩个图是iservice的后续完善。结合前一章,用户可继承此类,建立自己的service。