我遇到从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 for post是
(entity:Post; id:0x85e9820; data:{ created =“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];
答案 0 :(得分:0)
取决于什么类“lat”。如果它是NSNumber,那么执行[post.lat doubleValue]
编辑,根据您更新的问题,我们现在看到Post.lat确实是双倍的。但是,正如@ St3fan指出实体输出中的双引号使得它看起来好像该值是一个字符串。所以你有一个双重的NaN用于属性和另一个lat变量,它是一个看起来像的字符串。两个独立的变量。
答案 1 :(得分:0)
我看到lat和png值的双引号。这可能意味着这些值实际上是字符串而不是数字。
如果是这种情况,那么您可以使用NSString#doubleValue
获取与CLLocationCoordinate2D.latitude/longitude
兼容的转换数值。
答案 2 :(得分:0)
也许你可以这样试试:
NSDictionary *location = @{@lat,@lng};
[[NSNotificationCenter defaultCenter] postNotificationName:@"NOTIFICATION" object:location];
然后得到这样的位置:
NSDictionary *location = notification.object;