0

iOSアプリケーションでデータを取得するために使用したWebサーバーがあります。データには、itemId言うまでもなくフィールドが含まれています'48501'(引用なし)。アイテムの JSON データを、ではなくとして定義されているitemObjectinに読み込みます。itemIdNSStringNSInteger

itemObject.itemIdこの時点まではすべて機能しますが、関数を使用isEqual:して別の関数とNSString比較したいという問題があり48501ます。

言い換えれば、両方の文字列はまったく同じで、48501印刷すると含まれます。スペースや隠されたものはありません。すべてのisEqual:andisEqualToString:==は、比較時に false を報告します。

一方、 s に変換NSStringsしてNSIntegerそれらを比較すると、機能しますが、常に機能するとは限りません! TRUEキャッチするエラーがなく、行を指すだけでいつかクラッシュします! それらがまったく同じように印刷されているのがわかりますが、if ステートメントは通過しません。

私よりもはるかに経験のある人にコードを見せたところ、彼はこれはバグかもしれないと言っていました! 誰もこれにさらされたことがありますか?

4

1 に答える 1

5

itemIdに引用符が48501ない場合はJSON、 として逆シリアル化されNSNumberます。おそらくそれがまず問題です。あなたのタイプをログに記録してみて、とのためにitemId適切に使用-isEqualToString:してください。NSString-isEqualToNumber:NSNumber

于 2013-11-05T17:02:43.787 に答える