数据类型的基类:dataBase中写
-(NSString*)getPropertyType:(NSString*)proname;
-(BOOL)DictionaryToObject:(NSDictionary*)content;
这两个方法,数据类型都继承dataBase。
前提是属性名要和服务器的的字段名成一样,这样NSData转成的NSDictionary中的key才能和属性对应上。
-(NSString*)getPropertyType:(NSString*)proname
{
if([proname isEqualToString:(类中属性还是一个类)属性名])
{
return 这个属性所对应的类的名;
}
return nil;
}
-(BOOL)DictionaryToObject:(NSDictionary*)content
{
if(!content)
{
return NO;
}
NSArray *allkey = [content allKeys];
for (int i=0; i<[allkeycount]; ++i)
{
NSString* key = [allkey objectAtIndex:i];
id val = [content objectForKey:key];
if([val isKindOfClass:[NSNullclass]])
{
continue;
}
if([val isKindOfClass:[NSDictionaryclass]])
{
id obj = [[NSClassFromString([self getPropertyType:key]) alloc] init];
if(!obj)
{
continue;
}
[obj DictionaryToObject:val];
[self setValue:obj forKey:key];
[obj release];
}
else if([valisKindOfClass:[NSArrayclass]])
{
NSString* c = [selfgetPropertyType:key];;
if(c)
{
NSMutableArray* arry = [[NSMutableArrayalloc] init];
for (int i=0; i<[valcount]; ++i)
{
id obj = [[NSClassFromString(c)alloc] init];
[objDictionaryToObject:[val objectAtIndex:i]];
[arryaddObject:obj];
[objrelease];
}
[selfsetValue:arry forKey:key];
[arryrelease];
}
else
{
[selfsetValue:[NSMutableArrayarrayWithArray:val] forKey:key];
}
}
else
{
[selfsetValue:val forKey:key];
}
}
return YES;
}