为什么从NSMutableArray设置labels.text不起作用?

时间:2016-01-10 18:28:49

标签: ios objective-c arrays json

以下代码

NSMutableArray *textLabels = [[NSMutableArray alloc] initWithObjects:cell.textLabel1.text, cell.textLabel2.text, cell.textLabel3.text, cell.textLabel4.text, cell.textLabel5.text, nil];
                    for (int i=0; i<json.count; ++i)
 {
   textLabels[i] = [NSString stringWithFormat:@"#%@",[json[i] valueForKey:@"text"]]];
 }

写入textLabels数组正确的字符串值,但模拟器上的标签不会更改。为什么呢?

1 个答案:

答案 0 :(得分:5)

您似乎认为询问标签的文本会返回标签值的可更新引用,但事实并非如此。返回的字符串是一个不可变对象,您的代码只是将这些值替换为其他不可变值。

要更新标签,您应该在数组中保留对标签本身的引用,然后您可以索引到该数组并设置每个标签的文本。您不需要将任何文本存储在数组中。

您可以手动或使用IBOutletCollection将标签添加到数组中,具体取决于您的UI定义。