如何将多个字符串组合成一个字符串?Xcode



我制作了一些方法,从堆栈中提取数字和操作数,并以更用户友好的样式显示。问题在于descriptionString变量,当topOfStack为"+"时,它会部分返回null。我在下面显示日志。

+(NSString *)descriptionOfTopOfStack:(NSMutableArray *)stack
{
    NSString *descriptionString;
    id topOfStack = [stack lastObject];
    NSString *secondInStack;
    NSString *thirdInStack;
    if (topOfStack)
    [stack removeLastObject];    
    if ([topOfStack isKindOfClass:[NSNumber class]]) {
        descriptionString = [topOfStack stringValue];
    }
    else if([topOfStack isKindOfClass:[NSString class]]){
        if(([topOfStack isEqualToString:@"+"]) || ([topOfStack isEqualToString:@"—"])){
            secondInStack = [self descriptionOfTopOfStack:stack];
            thirdInStack = [self descriptionOfTopOfStack:stack];
           descriptionString = [descriptionString stringByAppendingFormat:@"%@ %@ %@",thirdInStack,topOfStack,secondInStack]; 
          NSLog(@"description is %@",descriptionString);
        }
    }
    return descriptionString;
}

我用2+6做了一个例子,这是日志:

  • 2012-02-21 22:09:39.983计算器[12536:f803]堆栈=(2.6."+")
  • 2012-02-21 22:09:39.983计算器[12536:f803]描述为(null)

为什么descriptionString为null?我哪里搞错了?感谢

在行中:

descriptionString = [descriptionString stringByAppendingFormat:@"%@ %@ %@",thirdInStack,topOfStack,secondInStack];

变量descriptionStringnil。用以下内容替换该行。

descriptionString = [NSString stringWithFormat:@"%@ %@ %@",thirdInStack,topOfStack,secondInStack];

我怀疑您没有在if的另一个分支中为descriptionString变量设置值,所以您将字符串附加到null。您可以设置变量,也可以使用[NSString stringWithFormat:format]:

if ([topOfStack isKindOfClass:[NSNumber class]]) {
    descriptionString = [topOfStack stringValue];
}
else if([topOfStack isKindOfClass:[NSString class]]){
    if(([topOfStack isEqualToString:@"+"]) || ([topOfStack isEqualToString:@"—"])){
        secondInStack = [self descriptionOfTopOfStack:stack];
        thirdInStack = [self descriptionOfTopOfStack:stack];
       descriptionString = [NSString stringWithFormat:@"%@ %@ %@",thirdInStack,topOfStack,secondInStack]; 
      NSLog(@"description is %@",descriptionString);
    }
}

最新更新