UILabel 的对象属性

Object properties to UILabel

我有一些具有 18 个属性的对象(该对象中的属性数量是静态的,不会随时间改变)。每个 属性 存储一些信息。我需要在循环中创建一个 UILabels(forforeach 等)并将当前 object.property 设置为当前 label。我该怎么做?

您可以使用这样的代码:

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
}];

您还可以使用 Objective-C 运行时获取所有属性,而无需预先填充 properties 数组,请参阅 here to SO

请注意,如果您的某些属性是标量类型,则此代码将会崩溃。所以你可能需要在这里进行一些类型检查