#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。ui