28

我在 Objective C 方面相对较新,但在编程方面不是。我想知道如何将一个 NSString 附加到另一个上。我正在制作一个用户必须完成一个基本句子的应用程序,我想知道如何获取用户输入的字符串并将其附加到屏幕上的当前字符串?

4

4 回答 4

49

我认为您正在寻找 NSString 的 stringByAppendingString 函数。请参见下面的示例。

NSString *errorTag = @"Error: ";
NSString *errorString = @"premature end of file.";
NSString *errorMessage = [errorTag stringByAppendingString:errorString];

产生字符串“错误:文件过早结束。”。

于 2012-07-03T09:53:54.500 回答
40

这也可以通过使用NSMutableString来实现:

NSMutableString *string = [NSMutableString stringWithString:@"String 1"];
[string appendString:@"String 2"];
于 2014-03-20T12:23:29.040 回答
13

It looks like you have your answer but you can also use the stringWithFormat: method like so:

NSString *sample1 = @"Hello"; 
NSString *sample2 = @"Being appended";

NSString *complete = [NSString stringWithFormat:@"%@%@", sample1,
sample2];
于 2013-01-08T15:16:46.780 回答
6

您不能真正将一个 NSString 附加到另一个,因为 NSString 类是不可变的。所有标准数据结构都有可变和不可变的变体(NSMutableString 与 NSString、NSMutableArray 与 NSArray 等)。如果您想在不重新分配新对象的情况下更改内容,您将需要使用可变版本。您可以使用以下方法重新创建一个新的 NSString:

NSString* string3 = [NSString stringWithFormat:@"%@%@",string1,string2];

虽然这对性能不利,所以如果您要在循环或某些性能敏感区域中执行此操作(即您一遍又一遍地附加到相同的字符串),这肯定会给您带来问题(我已经做了这个之前的错误)。

相反,您可能应该使用 NSMutableString 并将第二个字符串附加到它:

NSMutableString* string1 = [NSMutableString alloc] init];
[string1 appendString:string2];
于 2016-09-01T07:07:20.927 回答