2011-02-04 10 views

答えて

4
NSString *url = (NSString*)[item objectForKey:@"link"]; 
+5

注意をid' 'から型キャストがオプションであることを、あなたは'書くことができるようにするNSString * URL = [項目objectForKey:「リンク」@]配列や辞書内のオブジェクトは、あなたが期待しているものです。 ' –

4

マックスは正しいキャスト構文を持っていますが、それは、そのタイプのを確実にするためのObjective-Cでのコンパイル時にことはできませんので、あなたは、実行時にインスタンスのチェックのいくつかの種類をしたいよ安全のために

NSObject *obj = [item objectForKey:@"link"]; 
if ([obj isKindOfClass:[NSString class]]) { 
    NSString *stringValue = (NSString *)obj; 
    // Do something with the NSString 
} else { 
    // You can alternatively raise an NSException here. 
    NSLog(@"Serious error, we expected %@ to be an NSString!", obj); 
} 
+0

' id'の型変換はオプションなので、 'NSString * stringValue = obj;'と書くことができます。 –

+0

あなたはとても正しいです。私はいつも、誰かがNSStringではないかもしれないものから明示的にキャストしていることを誰かが知っていることを保証するために、キャストをステートメントに残します。 –

+0

私は試しました。しかし、それは動作していません。私はこのコードを使ってそれを理解しました: 'NSLog(@"%s "、stringValue);'。出力は '¿è'です。何か案が?? – Tedd

関連する問題