2013-02-19 5 views
2
for (Annotation *ann in annotaionArray) // annotationArray contains annotations added to map 
{ 
    NSString *fetchedtitle = ann.title; 

    if([fetchedtitle isEqualToString:oldTitle]); // oldTitle = textfield.text 
    { 
     ann.title = appDelegate.pinTitle; 
     break; 
    } 
} 

Но сравнение всегда верно. Что может быть ошибкой?isEqualToString всегда возвращает true

извлеченный const char из sqlite отлит до stringWithUTF8String.

Все было сделано, чтобы отличить строку, но все же почему ошибка в сравнении?

ответ

8

Снимите заднюю полуточку!

if ([fetchedtitle isEqualToString:oldTitle]) 
{ 
    ann.title = appDelegate.pinTitle; 
    break; 
} 

С полу-ободочной кишки, код такой же, как:

if ([fetchedtitle isEqualToString:oldTitle]) 
    ; 
{ 
    ann.title = appDelegate.pinTitle; 
    break; 
} 
+0

LOL Как я был глуп. Большое вам спасибо за вашу помощь ... – Manoj

+1

Мы все были там. – trojanfoe

+0

LOL, точно такая же ошибка .. Landed на этой странице .. – Kyuubi

1

Поскольку у вас есть с запятой в конце вашего заявления, если ваш код:

if([fetchedtitle isEqualToString:oldTitle]) 
      { 
      // Do nothing 
      } 

// this will always run 
    ann.title = appDelegate.pinTitle; 
       break; 
+0

Спасибо за помощь – Manoj

1

заменить следующую строку

if([fetchedtitle isEqualToString:oldTitle]); 

с

if([fetchedtitle isEqualToString:oldTitle]) 
+0

Спасибо за помощь – Manoj

1

Просто удалить точку с запятой (;) из следующей части кода ...

if([fetchedtitle isEqualToString:oldTitle]);