0

我在从 NSObject 中提取双精度时遇到问题。我收到这样的通知

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。post 的 NSLog 是

(实体:帖子;id:0x85e9820;数据:{ created = "2013-10-08 16:25:36 +0000"; lat = "-33.886336"; lng = "151.209565"; "post_id" = 2418; })

希望这是我想念的非常简单的事情。提前致谢。

编辑:当我尝试使用 [post.lat doubleValue] 时,它会收到一个错误,阻止构建“错误的接收器类型'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 确实是双重的。但是,正如@St3fan 指出的那样,实体输出中的双引号使它看起来好像该值是一个字符串。因此,您有一个初始化为 NaN 并用于属性的 double 和另一个看起来是字符串的 lat 变量。两个独立的变量。

于 2013-10-22T00:18:18.293 回答
0

我在 lat 和 png 的值周围看到双引号。这可能意味着这些值实际上是字符串而不是数字。

如果是这种情况,那么您可以使用NSString#doubleValue来获取与 兼容的转换后的数值CLLocationCoordinate2D.latitude/longitude

于 2013-10-22T00:21:15.440 回答