【发布时间】:2012-07-03 09:47:57
【问题描述】:
我在 Objective C 方面相对较新,但在编程方面不是。我想知道如何将一个 NSString 附加到另一个上。我正在制作一个用户必须完成一个基本句子的应用程序,我想知道如何获取用户输入的字符串并将其附加到屏幕上的当前字符串?
【问题讨论】:
标签: objective-c nsstring
我在 Objective C 方面相对较新,但在编程方面不是。我想知道如何将一个 NSString 附加到另一个上。我正在制作一个用户必须完成一个基本句子的应用程序,我想知道如何获取用户输入的字符串并将其附加到屏幕上的当前字符串?
【问题讨论】:
标签: objective-c nsstring
我认为您正在寻找 NSString 的 stringByAppendingString 函数。 请参阅下面的示例。
NSString *errorTag = @"Error: ";
NSString *errorString = @"premature end of file.";
NSString *errorMessage = [errorTag stringByAppendingString:errorString];
产生字符串“错误:文件过早结束。”。
【讨论】:
这也可以通过使用 NSMutableString 来实现:
NSMutableString *string = [NSMutableString stringWithString:@"String 1"];
[string appendString:@"String 2"];
【讨论】:
NSMutableString 是实际的解决方案。 stringByAppendingString 在您想在同一个变量中追加数据时对内存不友好。
看起来你已经有了答案,但你也可以像这样使用stringWithFormat: 方法:
NSString *sample1 = @"Hello";
NSString *sample2 = @"Being appended";
NSString *complete = [NSString stringWithFormat:@"%@%@", sample1,
sample2];
【讨论】:
你不能真正将一个 NSString 附加到另一个,因为 NSString 类是不可变的。所有标准数据结构都有可变和不可变的变体(NSMutableString 与 NSString、NSMutableArray 与 NSArray 等)。如果您想在不重新分配新对象的情况下更改内容,您将需要使用可变版本。您可以使用以下方法重新创建一个新的 NSString:
NSString* string3 = [NSString stringWithFormat:@"%@%@",string1,string2];
虽然这对性能不利,所以如果您要在循环或某些性能敏感区域中执行此操作(即您一遍又一遍地附加到相同的字符串),这肯定会给您带来问题(我以前犯过这个错误)。
相反,您可能应该使用 NSMutableString 并将第二个字符串附加到它:
NSMutableString* string1 = [NSMutableString alloc] init];
[string1 appendString:string2];
【讨论】: