反射类属性方法

来源:互联网 发布:58同城淘宝模特可信吗 编辑:程序博客网 时间:2024/04/28 20:26
广告数据实体:
// AdModel.h@interface AdModel: NSObject{}@property (nonatomic, assign) int       row;@property (nonatomic, retain) NSString *picture;@end
// AdModel.m@implementation AdModel@synthesize row      = _row;@synthesize picture  = _picture;- (void)dealloc{    [_picture release];    [super dealloc];}@end


用SQLiteHelper将数据库内容返回NSDictionary

然后通过反射类属性将数据保存到实体集合



// NSObject+Add- (NSArray *)getPropertyListByClass: (Class)clazz{    u_int count;         objc_property_t *properties  = class_copyPropertyList(clazz, &count);        NSMutableArray *propertyArray = [NSMutableArray arrayWithCapacity:count];        for (int i = 0; i < count ; i++)     {         const char* propertyName = property_getName(properties[i]);        [propertyArray addObject: [NSString  stringWithUTF8String: propertyName]];    }         free(properties);        return propertyArray;}

#define AD_INFO_QUERY  \@"SELECT * FROM ad ORDER BY row"- (NSArray *)queryAdInfo{        NSMutableArray *adEntityArray   = nil;    NSUInteger     count            = [[_sqliteHelper countRowsAtTable: @"ad"] intValue];    NSString     *conn   = [NSString stringWithFormat: AD_INFO_QUERY];    SQLiteHelper *obj    = [_sqliteHelper getQuery: conn];    if (obj != nil)    {        adEntityArray         = [NSMutableArray arrayWithCapacity: count];        NSArray *propertyList = [self getPropertyListByClass: [EntityAdInfo class]];        for (NSMutableDictionary *dic in obj)        {            EntityAdInfo *adEntity = [[EntityAdInfo alloc] init];                        for (NSString *key in propertyList)            {                 [adEntity setValue: [dic objectForKey: key] forKey: key];            }            [adEntityArray addObject: adEntity];            [adEntity release];        }    }    return adEntityArray;}