0

我有一种情况,我想分配一个 NSString 对象,并在 if-else 块内为其分配文本。当我编写这样的代码时:

NSString *string = [NSString alloc];  
if (firstCase) 
    [string initWithString:@"firstCase"];  
else if(secondCase)
    [string initWithString:@"secondCase"];  
[self someFunction:string];

我得到一个错误someFunction(当我尝试使用时抛出一个 NSInvalidArgumentException string)。此外,当我单步执行我的代码时,一旦我进入someFunction,控制台会生成一行内容:

你忘了嵌套alloc和init吗?

这是指string.

我使用 NSMutableString 尝试过同样的事情,string = [[NSMutableString alloc] init]只是在每个 if-else 块中执行并附加到字符串,但我想知道是否有人知道为什么以前的方法不会产生相同的结果。

4

1 回答 1

0

您是否有可能遇到不满足 if 和 else if 要求的情况?您可能想仔细检查您的案例是什么......或者您可能希望将字符串默认为“”。 编辑:您可以在使用 stringByAppendingString 将其声明为某个值后附加到字符串

NSString *string = [[NSString alloc] initWithString:@""];
if(case1)
   [string stringByAppendingString:@"desired string"];
elseif(case2)
   [string stringByAppendingString:@"other string"];

这是苹果的 NSString 类参考的链接:http: //developer.apple.com/library/ios/#documentation/Cocoa/Reference/Foundation/Classes/NSString_Class/Reference/NSString.html

于 2011-08-09T21:22:50.453 回答