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

しかし、比較は常に真実です。エラーは何でしょうか?

sqliteからフェッチされたconstcharはにキャストされstringWithUTF8Stringます。

文字列に完全にキャストするためにすべてが行われていますが、それでも比較してエラーが発生するのはなぜですか?

4

4 に答える 4

8

末尾のセミコロンを削除してください!

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

セミコロンを使用すると、コードは次のようになります

if ([fetchedtitle isEqualToString:oldTitle])
    ;
{
    ann.title = appDelegate.pinTitle;
    break;
}
于 2013-02-19T13:01:28.463 に答える
1

IFステートメントの最後にセミコロンがあるため、コードは次のようになります。

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

// this will always run
  ann.title = appDelegate.pinTitle;
                break;
于 2013-02-19T13:03:28.897 に答える
1

次の行を置き換えます

if([fetchedtitle isEqualToString:oldTitle]);

if([fetchedtitle isEqualToString:oldTitle])
于 2013-02-19T13:05:01.920 に答える
1

コードの次の部分からセミコロン(;)を削除するだけです...

if([fetchedtitle isEqualToString:oldTitle]); 
于 2013-02-19T13:13:18.640 に答える