I have some object with 18 properties (number of properties in that object is static and do not change over the time). Each property stores some information. I need to create a UILabels in cycle (for, foreach, etc.) and set current object.property to current label. How I can do that?
            Asked
            
        
        
            Active
            
        
            Viewed 415 times
        
    -5
            
            
        
        rmaddy
        
- 314,917
 - 42
 - 532
 - 579
 
        Sergey Krasiuk
        
- 198
 - 2
 - 9
 
- 
                    I reading many tutorials with some huge solutions, but not have simple solutions. – Sergey Krasiuk May 11 '15 at 22:24
 
1 Answers
2
            You may use the code like that:
id object; // your object
NSArray *properties = @[ @"prop1", @"prop2", ... ]; // your properties
[properties enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
    UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(0, idx * 30, 0, 30)]; // or set your custom frame
    label.text = [NSString stringWithFormat:@"%@", [object valueForKey:obj]];
    [label sizeToFit];
    [self.view addSubview:label]; // add to some superview
}];
You also can get all of your properties using Objective-C Runtime without having prepopulated properties array, please refer here to SO
Notice that if some of your properties are scalar types this code will crash. So you probably need some type check here