<强>可能重复:结果   如何串连在Objective-C字符串?

首先,该平台是iPhone和label.text改变显示的标签。考虑这种情况:

我已经整数数组。我想将其显示在屏幕上。

下面是我对此采取:

-(IBAction) updateText: (id)sender {
   int a[2];
   a[0]=1;
   a[1]=2;
   a[2]=3;
   for (int i=0; i<=10;i++)
     label.text = [NSString stringByAppendingString: [NSString stringWithFormat: @"%i", a[i]]]; 
}

正如你可能会看到,我很困惑。请请帮我出:(

有帮助吗?

解决方案

尝试这种情况:

NSMutableString* theString = [NSMutableString string];
for (int i=0; i<=10;i++){
    [theString appendString:[NSString stringWithFormat:@"%i ",i]];
}
label.text = theString;

其他提示

由于您使用的一个循环,不与汤姆和Benjie的解决方案有所谨慎。他们每个人都创建每次迭代一个额外的自动释放的对象。对于一个小的循环,这很好,但如果环的大小是无界的,或者如果字符串大,这会导致非常大的内存穗性能损失。特别是在iPhone上,这正是一种形式的循环,可导致因短暂的记忆尖峰奇怪的内存问题。

下面的解决方案具有更小的内存占用(它也稍快和花费较少的打字)。注意调用-appendFormat:而非-appendString。这避免了创建将被扔掉的第二串。请记住,最后的字符串有在您可能想摆脱的末尾一个额外的空间。您可以通过不同地处理所述第一或最后一次迭代,或通过在循环之后修整最后空间解决这个问题。

NSMutableString* theString = [NSMutableString string];
for (int i=0; i<=10;i++){
    [theString appendFormat:@"%i ",i];
}
label.text = theString;

不要忘记[NSArray componentsJoinedByString:]。在这种情况下,你没有一个NSArray,但在你做常见的情况,这可能是让你在找什么最好的方法。

//NSArray *chunks   
string = [chunks componentsJoinedByString: @","];

不使用的NSMutableString另一种方法:

NSString* theString = @"";
for (int i=0; i<=10;i++){
    theString = [theString stringByAppendingFormat:@"%i ",i];
}
label.text = theString;

下面是一个完整的实现(修正你的范围):

-(IBAction) updateText: (id)sender {
     int a[3];
     a[0]=1;
     a[1]=2;
     a[2]=3;
     NSString *str = @"";
     for (int i=0; i<3;i++)
       str = [str stringByAppendingFormat:@"%i ",i];
     label.text = str;
}

您也可以做这样的(例如,如果你想用英文逗号分隔):

-(IBAction) updateText: (id)sender {
     int a[3];
     a[0]=1;
     a[1]=2;
     a[2]=3;
     NSMutableArray *arr = [NSMutableArray arrayWithCapacity:3];
     for (int i=0; i<3;i++)
         [arr addObject:[NSString stringWithFormat:@"%i",i]];

     label.text = [arr componentsJoinedByString:@", "];
}
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top