2009-04-06 7 views
6

私はStanford iPhone classを処理していますが、なぜコンパイラの警告が表示されているのかわかりません。私は私のオブジェクトをNSStringにキャストする必要があると仮定しますが、そうしようとするとエラーが発生します。コードが実行され、私に期待される出力が与えられますが、警告は私を煩わします。NSStringにNSObjectをキャストする

NSLog(@"lowerCaseString is: %@", [object lowercaseString]); 

これは警告で実行されます:「NSObjectのは」

NSLog(@"lowerCaseString is: %@", [(NSString)object lowercaseString]); 

「を-lowerCaseString」これはエラーをスローに応答しない場合があります。非スカラ型への変換は、私はこれを信じる

答えて

21

を要求

NSLog(@"lowerCaseString is: %@", [(NSString *)object lowercaseString]); 

注:次のコード行に*を追加しました。 NSStringへのポインタを作成します。それが役に立てば幸い!

アダムNSStringのことになっている場合、オブジェクトはNSObjectのように宣言されたのはなぜ

+0

ありがとうアダム、私はすべての本と文書を開いていますが、この1文字の回答はどこにも見つかりませんでした。乾杯。 –

3

? NSStringメソッドを呼び出す場合は、NSStringとして宣言するか、idのままにしてください。その後、あなたはエラーを取得しません。

+0

これは、解析が必要なランダムオブジェクトのNSMutableArrayです。出力はNSStringオブジェクトに遭遇したときに発生します。それは間違いなく走ったが、私は警告も排除したい。 –

+0

NSObject *ではなく変数型のIDを持つ方が良いでしょう。それはあなたがオブジェクトのタイプを知らないときのIDです。詳細については、http://stackoverflow.com/questions/466777をご覧ください。 – Chuck

+0

NSObject以上のIDの使用を促進するための+1 * – Abizern

関連する問題