我在从 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。邮政的 NSLog 是
(实体:邮政;编号:0x85e9820;数据:{ 创建 = "2013-10-08 16:25:36 +0000"; 纬度 = "-33.886336"; 液化天然气 = "151.209565"; "post_id" = 2418;})
希望这是我错过的非常简单的东西。提前谢谢。
编辑:当我尝试使用[post.lat doubleValue]时,它得到一个错误,阻止构建"错误的接收器类型'double'"
答:我需要像这样提取值
[[post valueForKey:@"lat"] doubleValue];
我在 lat 和 png 的值周围看到双引号。这可能意味着这些值实际上是字符串而不是数字。
如果是这种情况,则可以使用 NSString#doubleValue
来获取与 CLLocationCoordinate2D.latitude/longitude
兼容的转换数值。
也许你可以这样尝试:
NSDictionary *location = @{@lat,@lng};
[[NSNotificationCenter defaultCenter] postNotificationName:@"NOTIFICATION" object:location];
然后像这样获取位置:
NSDictionary *location = notification.object;
取决于"lat"是什么类。 如果它是一个NSNumber,那么[post.lat doubleValue]
编辑:从您更新的问题中,我们现在看到Post.lat确实是双重的。但是,正如@St3fan指出的那样,实体输出中的双引号使该值看起来好像是一个字符串。因此,您有一个启动到 NaN 并用于属性的双精度值和另一个看起来是一个字符串的 lat 变量。两个单独的变量。