7

サーバーから辞書を取得しています

myDictionary = 
{
"rank":"1",
"color":"red",
"position":"middle"
}

今、if条件でキー「位置」の値を確認したい

こんな感じでやってます

if ([[myDictionary valueForKey:@"position"] isEqualToString:@"middle"]) {
        //do Some stuff
} else{
        //do some other stuff
}

しかし、 のデータ型[myDictionary valueForKey:@"position"]_NSCFStringであるため、値が正しく比較されず、値が正しい場合でも if ループに入ることはありません。

NSStringif 条件で比較できるように変換するにはどうすればよいですか?

私はこれらの質問を見てきました..

NSString インスタンスは、そのクラスを NSCFString として報告します

NSCFString から NSString を取得する

xcodeのNSStringまたはNSCFString?

これらの質問から、それが実際にはさまざまなタイプの文字列オブジェクトのコンテナ クラスであることを知りました 。NSString通常、NSString コンストラクターは、実際には 型のオブジェクトを返しますNSCFString。これは、Core Foundation の薄いラッパーCFString structです。

しかし、彼らは私を助けませんでした..そして、実際にNSStringに変換する方法を誰も教えていないので、重複としてマークしないでください。

4

2 に答える 2

6

_NSCFStringに変換する必要はありませんNSString。のサブクラスとして、(および の他のすべてのメソッド)NSStringに応答することが保証されています。あなたの問題は文字列から来ているのではなく、おそらく. すべてのキーをディクショナリに記録してみて、期待どおりに動作していることを確認してください。-isEqualToString:NSStringmyDictionary

于 2014-04-18T09:16:21.023 に答える
0
于 2014-04-18T09:16:12.607 に答える