2012-02-21 11 views
1

예, 예. 부끄러운 줄 알아. 나는 UIView의에 그리는 노력하고 내 코드는 다음과 같습니다 개체가 하나 이상의 금속 이름 레코드가 포함되어있는 경우if drawRect의 if 문 문제

NSString *str; 

if([email protected]"" && [email protected]"" && [email protected]"") 
{ 
    str=[NSString stringWithFormat:@"%@ + %@ + %@",kmObj.metal,kmObj.metalName2,kmObj.metalname3]; 
} 
if([email protected]"" && [email protected]"" && [email protected]"") 
{ 
    str=[NSString stringWithFormat:@"%@ + %@",kmObj.metal,kmObj.metalName2]; 
} 
if([email protected]"" && [email protected]"" && [email protected]"") 
{ 
    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 문에 잘못된 점이 있습니까?

+0

당신이 + 표시가 잘못된 위치에 나타납니다 실제 예를 들어 문자열을 제공 할 수 있습니다 귀하의 문자열 비교에 대한 [kmObj.metal isEqualToString:@""]을 사용합니까? – bneely

답변

2

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]; 
} 

을이 기술로, 당신은 개별적으로 각각의 문자열을 확인하고 다른 유효한 문자열이 그것을 따를 것이다 알고있는 경우에만 더하기 기호 (+)를 포함한다. 워드 프로세서에서 [stringA isEqualToString:stringB]

:

+0

같은 결과가 나옵니다. string! = "" "항상 잘 작동했습니다. – NCFUSN

+1

고맙습니다. – NCFUSN

1

문자열 비교는 형태를 취한다 When you know both objects are strings, this method is a faster way to check equality than isEqual:

플러스, 문자열에 대한 == 이상한 어쨌든입니다 - 그들은 비 프리미티브이고, 당신이 값 비교를 원하는 것입니다.

또한, (이 값이 공급되는 위치에 따라) 계정으로 nil 및/또는 [NSNull null]이 예상해야한다. 빈 문자열과 같은지 아닌지에 대한 현재 테스트는 이것을 고려하지 않습니다.

0

"+"기호를 원하지 않으셨습니까? 그런 다음 NSString에 넣지 마십시오.

그래서 그 대신

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

의 할

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

또한

+0

LOL ... 제게 그의 문제가 아니라고 말해주세요. – Steve

+0

글쎄, 그의 질문에서 "나는 그들을 필요로하지 않는 곳의 + 표지판을 읽을 수 없다."나는 단지 그가 + 표지판을 "제거"하고 싶다고 생각했다. 그렇지 않으면, 그 문장은 실제로 이해가되지 않습니다. LOL –

+0

아, 미안해. 완전히 철자가 잘못되었습니다. 확실히, 나는 '읽음'대신 '제거'를 의미합니다. – NCFUSN