Manoj
Manoj

Reputation: 1540

isEqualToString always returns true

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

But the comparison is always true. What could be the error please?

fetched const char from sqlite is casted to stringWithUTF8String.

Everything has been done to cast perfectly to string but still why is the error in comparison?

Upvotes: 1

Views: 306

Answers (4)

Vineet Singh
Vineet Singh

Reputation: 4019

Just remove semicolon(;) from the following part of your code...

if([fetchedtitle isEqualToString:oldTitle]); 

Upvotes: 1

Girish
Girish

Reputation: 4712

replace the following line

if([fetchedtitle isEqualToString:oldTitle]);

with

if([fetchedtitle isEqualToString:oldTitle])

Upvotes: 1

chewy
chewy

Reputation: 8267

Since you have a semi colon at the end of your IF statement your code is :

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

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

Upvotes: 1

trojanfoe
trojanfoe

Reputation: 122391

Remove the trailing semi-colon!

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

With the semi-colon, your code is the same as:

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

Upvotes: 8

Related Questions