0

NSObject から double を抽出する際に問題が発生しています。みたいな通知が来ます

NSString *key = @"Post";
NSDictionary *dictionary = [notification userInfo];
Post* post = [dictionary objectForKey:key];

CLLocationCoordinate2D zoomLocation;
zoomLocation.latitude = post.lat;
zoomLocation.longitude = post.lng;

NSLog(@"%f", post.lat);
NSLog(@"%@", post);

post.lat の NSLog は nan です。投稿の NSLog は

(エンティティ: 投稿; id: 0x85e9820 ; データ: { 作成 = "2013-10-08 16:25:36 +0000"; lat = "-33.886336"; lng = "151.209565"; "post_id" = 2418; })

うまくいけば、それは私が見逃している本当に単純なものです。前もって感謝します。

編集: [post.lat doubleValue] を使用しようとすると、「Bad receiver type 'double'」の構築を妨げるエラーが発生します。

回答: このような値を抽出する必要がありました

[[post valueForKey:@"lat"] doubleValue];
4

3 に答える 3

0

多分あなたはこのようにそれを試すことができます:

NSDictionary *location = @{@lat,@lng};
[[NSNotificationCenter defaultCenter] postNotificationName:@"NOTIFICATION" object:location];

次に、次のように場所を取得します。

NSDictionary *location = notification.object; 
于 2013-10-22T01:19:24.333 に答える
0

"lat" がどのクラスかによって異なります。それが NSNumber の場合は、[post.lat doubleValue]

編集:更新された質問から、Post.lat が実際に double であることがわかります。ただし、@ St3fan が指摘したように、エンティティ出力の二重引用符により、その値が文字列であるかのように見えます。したがって、NaNに初期化され、プロパティに使用されるdoubleと、文字列である別のlat変数があります。2 つの個別の変数。

于 2013-10-22T00:18:18.293 に答える