Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 使用';在MKPlacemark崩溃应用程序上调用setCoordinate;无法识别的选择器';_Objective C_Mkmapview_Mkannotation_Mkplacemark - Fatal编程技术网

Objective c 使用';在MKPlacemark崩溃应用程序上调用setCoordinate;无法识别的选择器';

Objective c 使用';在MKPlacemark崩溃应用程序上调用setCoordinate;无法识别的选择器';,objective-c,mkmapview,mkannotation,mkplacemark,Objective C,Mkmapview,Mkannotation,Mkplacemark,我有一个MKMapView,我正在添加一个MKPlacemark来表示用户刚刚选择的建筑物的位置。用户一次只能选择一个建筑,我只想在他们选择新建筑时将placemark移动到新建筑。在他们选择的第一座建筑上,它可以正常工作,并在地图上放置一个图钉。当我尝试在placemark上调用setCoordinate以更新标记的位置时,当他们选择新建筑时,我得到-[MKPlacemark setCoordinate:]:未识别的选择器发送到实例 在MyViewController.h中,我有: @prop

我有一个MKMapView,我正在添加一个MKPlacemark来表示用户刚刚选择的建筑物的位置。用户一次只能选择一个建筑,我只想在他们选择新建筑时将placemark移动到新建筑。在他们选择的第一座建筑上,它可以正常工作,并在地图上放置一个图钉。当我尝试在placemark上调用
setCoordinate
以更新标记的位置时,当他们选择新建筑时,我得到
-[MKPlacemark setCoordinate:]:未识别的选择器发送到实例

在MyViewController.h中,我有:

@property (nonatomic, strong)MKPlacemark *selectedBuildingPlacemark;
在MyViewController.m中

@synthesize selectedBuildingPlacemark;

...

if (self.selectedBuildingPlacemark == nil) {
        self.selectedBuildingPlacemark = [[MKPlacemark alloc] initWithCoordinate:myCoord addressDictionary:nil];
        [mapView addAnnotation:self.selectedBuildingPlacemark];
    }
    else {
        [self.selectedBuildingPlacemark setCoordinate:myCoord];
    }
我认为MKPlacemark符合MKAnnotation,因此应该实现
setCoordinate
。有人能告诉我我的错误吗?

的文档中说:

支持拖动的批注应实现此方法以更新批注的位置

因此,方法
setCoordinate:
是可选的,仅由支持拖动的类实现。的文档未引用该方法,因此未实现该方法

因此,您应该在每次选择新建筑时创建一个新实例。

的文档说明:

支持拖动的批注应实现此方法以更新批注的位置

因此,方法
setCoordinate:
是可选的,仅由支持拖动的类实现。的文档未引用该方法,因此未实现该方法


因此,您应该在每次选择新建筑时创建一个新实例。

如果您不特别需要使用
MKPlacemark
(它看起来不像,因为您要为addressDictionary传递nil),则可以使用
MKPointAnnotation


MKPointAnnotation
实现了
MKAnnotation
,但添加了一个
setcoordination
方法。

如果您不特别需要使用
MKPlacemark
(看起来不像它,因为地址字典要传递nil),可以使用
MKPointAnnotation


MKPointAnnotation
实现
MKAnnotation
但添加了一个
setcoordination
方法。

在哪里设置myCoord?在哪里设置myCoord?