0

JSON呼び出しから(double)値を出力/アクセスして取得しようとしています:

[イベント緯度]: 認識されないセレクターがインスタンス 0x8d09970 に送信されました

同じオブジェクトから文字列値にアクセスすると、問題なく出力されます。デバッガーに値が表示され、event.latitude が double から NSCFNumber としてマップされます。これが緯度を適切にキャストまたは宣言していないだけなのか、それともその値に対して正しくマッピングされていないのかはわかりません。ストリングスワーク

ここにいくつかのコードがあります:

event.h
@interface Event : NSObject  {
    NSNumber    *latitude;
}

@property (nonatomic, retain) NSNumber *latitude;
@end

ViewController.m スニペット

Event *event = (Event *)[eventsArray objectAtIndex:indexPath.row];

static NSNumberFormatter *numberFormatter;
if (numberFormatter == nil) {
    numberFormatter = [[NSNumberFormatter alloc] init];
    [numberFormatter setNumberStyle:NSNumberFormatterDecimalStyle];
    [numberFormatter setMaximumFractionDigits:3];
}
NSLog(@"Event - %@", event.name );  //This works just fine
NSLog(@"Event - %@", event.latitude );  //This is where I am testing different ways of accessing the latitude
NSLog(@"Event - %@", [numberFormatter stringFromNumber:[event latitude]] );
//NSLog(@"Event - %@", [[event latitude] stringValue] );
NSString *coordinatesString = [[NSString alloc] initWithFormat:@"Lat:%@, Lon:%@",
                               [numberFormatter stringFromNumber:[event latitude]],
                               [numberFormatter stringFromNumber:[event longitude]]];
4

2 に答える 2

0

[Event latitude]: unrecognized selector sent to instance 0x8d09970Event オブジェクトに「latitude」というメソッドがなかったことを意味します。

最初に、どこでも「緯度」のスペルが正しいことを確認することをお勧めします (そのようなものを 5 回見て、時々表示されないことがあります)。

その後、何らかの形で「イベント」の定義が 2 つにならないようにする必要があります。イベントのテスト インスタンスを作成し、「緯度」プロパティに直接アクセスして、すべてが問題ないことを確認できます。

于 2012-12-05T23:43:19.937 に答える
0

それは間違いなくキャストに関するものではありません。

あなたが得ている例外は、latitudeおそらくあなたが忘れたか、タイプミスした実装の欠如によるものです。

実装ファイル@synthesizeのプロパティでしたか?Event.m

于 2012-12-06T00:19:26.510 に答える