как сделать одну строку из нескольких?Xcode - PullRequest
0 голосов
/ 21 февраля 2012

Я создаю некоторый метод, который берет цифры и операнды из стека и отображает их в более удобном для пользователя стиле. Проблема с переменной descriptionString, она возвращает ноль частично, когда topOfStack равен "+". Я показываю журнал ниже.

+(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] stack = ( 2, 6, "+" )
  • 2012-02-21 22: 09: 39.983 Калькулятор [12536: f803] описание (ноль)

Почему descriptionString имеет значение null? Где я ошибся? Спасибо

Ответы [ 2 ]

1 голос
/ 21 февраля 2012

В строке:

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

Переменная descriptionString равна nil.Замените эту строку следующим:

descriptionString = [NSString stringWithFormat:@"%@ %@ %@",thirdInStack,topOfStack,secondInStack];
0 голосов
/ 21 февраля 2012

Я подозреваю, что вы не устанавливаете значение для переменной descriptionString в другой ветви if, поэтому вы добавляете строку к 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);

    }

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...