-1

次のように、NSInteger を int と比較するときにクレイジーな問題が発生します。

NSInteger count = [dictionary count];

if (count == 0) {
    // Do something
}
else {
    // Do something
}

カウントがゼロのときはif節の切り出されたコードが実行されるが、カウント数が変化するとif節の切り出されたコードは実行されず(これは正しい)、else節の切り出されたコードは実行されないどちらかを実行します。デバッグすると、カーソルは常に else 句を飛び越えます。

カウント数を int に変更するか、NSNumber として比較しようとしましたが、何も変わりませんでした。

この問題を解決する方法を知っている人はいますか?

4

1 に答える 1

0

ここでは NSInteger と int に関連するものは何もありません。if else のロジックは、何が起こっても、そのうちの 1 つだけを呼び出す必要があるということです。そのため、それらのいずれも呼び出されない場合は、別の何かが間違って発生しています。if 句と else 句の両方を NSLog できますか。if 句と else 句の中身を教えてくれるとさらに良いです。

于 2010-07-21T04:29:54.800 に答える