iOS   发布时间:2022-03-30  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了ios – 将’NSNumber * __ strong’发送到不兼容类型’CLLocationDegrees'(又名’double’)的参数大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
NSnumber * latitude =  [NSnumber numberWithDouble:[[cityDictionary valueForKeyPath:@"coordinates.latitude"]doubleValue]];

      NSnumber * longitude =  [NSnumber numberWithDouble:[[cityDictionary valueForKeyPath:@"coordinates.longitude"]doubleValue]];


    CLLOCATIOn *lisTingLOCATIOn = [[CLLOCATIOn alloc] initWithLatitude:latitude longitude:longitude];

我在上面第3行收到以下错误

Sending 'NSnumber *__strong' to parameter of incompatible type 'CLLOCATIOndegrees' (aka 'double')

我知道这是因为我试图将NSnumber传递到一个预期会有双倍的地方.但由于ARC,铸造不起作用?

解决方法

对[cityDictionary valueForKeyPath:@“coordinates.latitude”]的调用已经为您提供了一个NSnumber对象.为什么将它转换为double然后创建一个新的NSnumber?

你可以这样做:

NSnumber *latitude = [cityDictionary valueForKeyPath:@"coordinates.latitude"];
NSnumber *longitude = [cityDictionary valueForKeyPath:@"coordinates.longitude"];
CLLOCATIOn *lisTingLOCATIOn = [[CLLOCATIOn alloc] initWithLatitude:[latitude doubleValue] longitude:[longitude doubleValue]];

如果事实证明[cityDictionary valueForKeyPath:@“coordinates.latitude”]实际上是返回NSString而不是NSnumber,那么执行以下操作:

CLLOCATIOndegrees latitude = [[cityDictionary valueForKeyPath:@"coordinates.latitude"] doubleValue];
CLLOCATIOndegrees longitude = [[cityDictionary valueForKeyPath:@"coordinates.longitude"] doubleValue];
CLLOCATIOn *lisTingLOCATIOn = [[CLLOCATIOn alloc] initWithLatitude:latitude longitude:longitude];

大佬总结

以上是大佬教程为你收集整理的ios – 将’NSNumber * __ strong’发送到不兼容类型’CLLocationDegrees'(又名’double’)的参数全部内容,希望文章能够帮你解决ios – 将’NSNumber * __ strong’发送到不兼容类型’CLLocationDegrees'(又名’double’)的参数所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。