2

NSStringアドレスオブジェクトをUILabelテキストに渡そうとしていますが、以下のスクリーンショットに示すように、互換性のないポインターに関する警告をXCodeコンパイラから受け取りました。

互換性のないポインタ型の警告-スクリーンショット

以下のスクリーンショットから、私のアドレスオブジェクトがNSStringとして宣言されていることがわかります。

プロパティタイプ-スクリーンショット

NSStringを次のように表示してみました:

    NSLog(@"%@",[[LocationData objectAtIndex:rowDisplay] address]);

互換性のないポインタエラーなしで動作します。誰か助けてもらえますか?私はいくつかの調査を行いましたが、それでも解決策を見つけることができません。

私のアドレスは、NSArrayに格納されるオブジェクトです。アドレス形式は常に同じです。たとえば、「542 W 112 St NewYorkNY10025」のようになります。

ありがとう。

4

2 に答える 2

4

addressこれは、一部のSDKクラスで呼び出されたメソッド/プロパティがすでに存在し、たまたまが返されるという事実が原因である可能性がありますNSData *

NSArrayは型のobjectAtIndex:オブジェクトを返しますが、コンパイラは、を返すように定義されidているのがカスタムクラスであることを認識していません。セレクターと一致させようとすると、SDKからのものを取得しますが、ユーザーのものは取得しません。addressNSString *address

ただし、返されたオブジェクトをクラスにキャストして、メソッドをaddress呼び出すことはできます。

[(YourClass *)[LocationData objectAtIndex:rowDisplay] address];

formatはandの両方を受け入れるため、に出力addressするときに警告は表示されません(それ以外のクラスの場合、実際にはメソッドの結果を出力します。これはを返します)。NSLog%@NSString *NSData *NSStringdescriptionNSString *

于 2012-03-03T14:06:16.623 に答える
1

あなたの質問には多くのフォローアップ質問があります。しかし、あなたは言った、あなたはで示すことができます:

NSLog(@"%@",[[LocationData objectAtIndex:rowDisplay] address]);

だから、これを使ってみませんかUILabel

self.displayAddress.text =  [NSString stringWithFormat:@"%@"[[LocationData objectAtIndex:rowDisplay] address]];

PS:1行のコードに画像を使用しないでください。ここにコードを再入力する必要があります...

于 2012-03-03T14:17:19.180 に答える