если выписка выдается в drawRect - PullRequest
1 голос
/ 22 февраля 2012

Да, да. Мне стыдно. Я пытаюсь нарисовать в UIView и мой код:

NSString *str;

if(kmObj.metal!=@"" && kmObj.metalName2!=@"" && kmObj.metalname3!=@"")
{
   str=[NSString stringWithFormat:@"%@ + %@ + %@",kmObj.metal,kmObj.metalName2,kmObj.metalname3]; 
}
if(kmObj.metal!=@"" && kmObj.metalName2!=@"" && kmObj.metalname3==@"")
{
   str=[NSString stringWithFormat:@"%@ + %@",kmObj.metal,kmObj.metalName2]; 
}
if(kmObj.metal!=@"" && kmObj.metalName2==@"" && kmObj.metalname3==@"")
{
   str=[NSString stringWithFormat:@"%@",kmObj.metal]; 
}
[str drawAtPoint:CGPointMake(10.0,234.0)
                forWidth:200
                withFont:[UIFont systemFontOfSize:20.0]
             minFontSize:20.0
          actualFontSize:NULL
           lineBreakMode:UILineBreakModeTailTruncation 
      baselineAdjustment:UIBaselineAdjustmentAlignBaselines];

Итак, этот код предполагает проверку, содержит ли Объект более одной записи с именем металла. Если так, то нужно отформатировать строку для формирования: Au + Ag + Cu ... Моя проблема в том, что при выводе я не могу избавиться от знаков +, где они мне не нужны. Что-то не так в моем утверждении if?

Ответы [ 3 ]

2 голосов
/ 22 февраля 2012

Вместо if (string != @"") используйте ![string isEqualToString:@""] или, возможно, ([string length] > 0).Вам нужно убедиться, что вы выполняете сравнение значение , а не сравнение указатель .

В любом случае, я бы написал код, подобный этому:

NSString *outputString = @"";

if ([firstString length] > 0) {
    outputString = [outputString stringByAppendingString:firstString];
}

if ([secondString length] > 0) {
    outputString = [outputString stringByAppendingFormat:@" + %@", secondString];
}

if ([thirdString length] > 0) {
    outputString = [outputString stringByAppendingFormat:@" + %@", thirdString];
}

С помощью этого метода вы проверяете каждую строку отдельно и включаете знак плюса только в том случае, если знаете, что за ней следует другая действительная строка.

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

Сравнение строк должно принимать форму: [stringA isEqualToString:stringB]

Из документов: When you know both objects are strings, this method is a faster way to check equality than isEqual:

Плюс, == для строк в любом случае странно - они не примитивны, и вы хотите сравнение значений.

Кроме того, следует учитывать возможность наличия значений nil и / или [NSNull null] (в зависимости от источника этих значений). Ваш текущий тест того, равны ли они пустым строкам, не учитывает это.

0 голосов
/ 22 февраля 2012

Вы имели в виду, что вам не нужен знак "+"? Тогда не помещайте это в свою строку NSString.

Так что вместо

str = [NSString stringWithFormat:@"%@ + %@ + %@",kmObj.metal,kmObj.metalName2,kmObj.metalname3];

сделать

str = [NSString stringWithFormat:@"%@ %@ %@",kmObj.metal,kmObj.metalName2,kmObj.metalname3];

также используйте [kmObj.metal isEqualToString:@""] для сравнения строк

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