Objective c 设置UILabel数组的值,该数组依次位于NSMutableDictionary中

Objective c 设置UILabel数组的值,该数组依次位于NSMutableDictionary中,objective-c,Objective C,我有一个UILabel数组,如下所示: @interface ClueLabels : NSObject @property (nonatomic) IBOutlet UILabel *label1, *label2, *label3, *label4, *label5, *label6, *label7, *label8; @property (nonatomic, readonly) NSArray *labels; + (ClueLabels *)clueLabels; - (voi

我有一个UILabel数组,如下所示:

@interface ClueLabels : NSObject

@property (nonatomic) IBOutlet UILabel *label1, *label2, *label3, *label4, *label5, *label6, *label7, *label8;
@property (nonatomic, readonly) NSArray *labels;

+ (ClueLabels *)clueLabels;

- (void)labelsDidLoad;

@end
 NSMutableArray *keyArray;
 NSMutableArray *valueArray;
 keyArray = [NSMutableArray arrayWithObjects:@"answerButtons", @"clueLabels", nil];
 valueArray = [NSMutableArray arrayWithObjects: [AnswerButtons answerButtons], [ClueLabels clueLabels], nil];

 NSMutableDictionary *externals = [NSMutableDictionary dictionaryWithObjects:valueArray
                                                       forKeys:keyArray];
它是作为单例实现的:

@implementation ClueLabels

@synthesize label1 = _label1;
@synthesize label2 = _label2;
@synthesize label3 = _label3;
@synthesize label4 = _label4;
@synthesize label5 = _label5;
@synthesize label6 = _label6;
@synthesize label7 = _label7;
@synthesize label8 = _label8;

@synthesize labels = _labels;

+ (ClueLabels *)clueLabels {
    static ClueLabels *singleton;
    static dispatch_once_t once;
    dispatch_once(&once, ^{
        singleton = [[ClueLabels alloc] init];
    });
    return singleton;
}

- (void)labelsDidLoad {
    _labels = [[NSArray alloc] initWithObjects:_label1, _label2, _label3, _label4, _label5, _label6, _label7, _label8, nil];
    NSLog(@"Clue labels did load");
}

@end
然后存储在NSMutableDictionary中,如下所示:

@interface ClueLabels : NSObject

@property (nonatomic) IBOutlet UILabel *label1, *label2, *label3, *label4, *label5, *label6, *label7, *label8;
@property (nonatomic, readonly) NSArray *labels;

+ (ClueLabels *)clueLabels;

- (void)labelsDidLoad;

@end
 NSMutableArray *keyArray;
 NSMutableArray *valueArray;
 keyArray = [NSMutableArray arrayWithObjects:@"answerButtons", @"clueLabels", nil];
 valueArray = [NSMutableArray arrayWithObjects: [AnswerButtons answerButtons], [ClueLabels clueLabels], nil];

 NSMutableDictionary *externals = [NSMutableDictionary dictionaryWithObjects:valueArray
                                                       forKeys:keyArray];
现在我想写入标签(例如,清除标签),但它们被隐藏在一个单例中,并作为数组存储在键值字典中。从概念上讲,我需要使用键值语法向字典中的一个对象发送消息,然后在该数组中的对象上循环,例如用setText@“”清除它们。这是带有循环的嵌套消息吗?我不太明白如何组织这项任务。多谢各位

编辑:我开始思考并决定(可能是错误的)因为标签在一个单例中,我根本不需要通过字典访问它们,我只需要访问单例,字典就会自动更新。所以我决定我的问题更多的是“如何与我的单身汉交谈”。我环顾四周,想了想,我可以这样做:

NSLog(@"%@", [ClueLabels clueLabels].labels)
   for (UILabel *theLabel in clueLabels)
   {
   [theLabel setText:@"];
   }

返回每个标签的详细信息。我希望能够得到标签的数量,这样我就可以循环它们,并将它们的标题设置为任意字符串。我可以围绕[ClueLabels ClueLabels].标签构建,还是需要不同的方法?谢谢。

你可以按你说的那样在UILabel上循环。或者,您可以对数组使用“makeObjectsPerformSelector”方法,该方法将(如其名称所示)使数组中的所有对象执行您发送的选择器。从而节省了循环部分。但是无论哪种方式,你都需要掌握字典中包含的标签数组,任务完成了!我是这样做的:

// Clear the fields

for (NSInteger idx = 0; idx < 8; idx++) {
    UILabel *l = [[ClueLabels clueLabels].labels objectAtIndex:idx];
    [l setText:@""];
//清除字段
对于(NSInteger idx=0;idx<8;idx++){
UILabel*l=[[ClueLabels ClueLabels].labels对象索引:idx];
[l setText:@”“;

显然,我还在学习!

你也可以这样做:

NSLog(@"%@", [ClueLabels clueLabels].labels)
   for (UILabel *theLabel in clueLabels)
   {
   [theLabel setText:@"];
   }

谢谢。我想我的问题是关于最后一部分“…掌握字典中包含的标签数组。请参阅编辑原始问题。