ios – 表达式不可分配,MKAnnotation类委托的坐标属性

ios – 表达式不可分配,MKAnnotation类委托的坐标属性,第1张

概述我做了这个架构,以便更好地解释我的麻烦是什么. 那么,我该怎么做才能解决它呢?谢谢=) CLLocationCoordinate2D是结构,即值类型.它是通过值传递的,这是另一种说“复制”的方式.如果您分配其字段(例如经度),那么所有 *** 作都是修改副本;注释中的原始坐标将保持不变.这就是该财产不可转让的原因. 要解决此问题,您应该为纬度和经度添加单独的属性,然后使用它们: @interface An 我做了这个架构,以便更好地解释我的麻烦是什么.

那么,我该怎么做才能解决它呢?谢谢=)

解决方法 CLLocationCoordinate2D是结构,即值类型.它是通过值传递的,这是另一种说“复制”的方式.如果您分配其字段(例如经度),那么所有 *** 作都是修改副本;注释中的原始坐标将保持不变.这就是该财产不可转让的原因.

要解决此问题,您应该为纬度和经度添加单独的属性,然后使用它们:

@interface Annotation : NSObject<MKAnnotation>    @property (reaDWrite) CLLocationdegrees latitude;    @property (reaDWrite) CLLocationdegrees longitude;    @property (nonatomic,assign) CLLocationCoordinate2D coordinate;    ...@end@implementation Annotation    -(CLLocationdegrees) latitude {        return _coordinate.latitude;    }    -(voID)setLatitude:(CLLocationdegrees)val {        _coordinate.latitude = val;    }    -(CLLocationdegrees) longitude{        return _coordinate.longitude;    }    -(voID)setLongitude:(CLLocationdegrees)val {        _coordinate.longitude = val;    }@end

现在您的XML解析器代码可以执行此 *** 作:

if ([llave isEqualTo:@"lat"]) {    puntoXML.latitude = [valor doubleValue];} else if ([llave isEqualTo:@"lon"]) {    puntoXML.longitude = [valor doubleValue];} ...
总结

以上是内存溢出为你收集整理的ios – 表达式不可分配,MKAnnotation类委托的坐标属性全部内容,希望文章能够帮你解决ios – 表达式不可分配,MKAnnotation类委托的坐标属性所遇到的程序开发问题。

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

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1030092.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-23
下一篇2022-05-23

发表评论

登录后才能评论

评论列表(0条)

    保存