Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/102.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.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
Ios 如何识别无法识别的选择器和未识别的对象';我认不出来了?_Ios_Objective C_Mkmapview_Unrecognized Selector - Fatal编程技术网

Ios 如何识别无法识别的选择器和未识别的对象';我认不出来了?

Ios 如何识别无法识别的选择器和未识别的对象';我认不出来了?,ios,objective-c,mkmapview,unrecognized-selector,Ios,Objective C,Mkmapview,Unrecognized Selector,下面是斯坦福iOS 7课程的第15章,其中实现了MapKit。当在核心数据表视图控制器(教授给控制器的名称)中单击一个单元格时,它应该转到地图视图,在地图视图中,图钉(即注释)显示照片在地图上的位置。下面的代码来自由摄影师组织照片的控制器,并在下面代码中方法的第一行旁边生成此警告 sending 'nsarray *' to parameter of incompatible type 'id mkannotation ' 在XCode中,当我运行它时,它会在下面代码的第一行停止,并在控制台中

下面是斯坦福iOS 7课程的第15章,其中实现了MapKit。当在核心数据表视图控制器(教授给控制器的名称)中单击一个单元格时,它应该转到地图视图,在地图视图中,图钉(即注释)显示照片在地图上的位置。下面的代码来自由摄影师组织照片的控制器,并在下面代码中方法的第一行旁边生成此警告

sending 'nsarray *' to parameter of incompatible type 'id mkannotation '
在XCode中,当我运行它时,它会在下面代码的第一行停止,并在控制台中留下此错误消息

Photomania[2108:a0b] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSArrayM coordinate]: unrecognized selector sent to instance 0x9d37df0'
因此,我知道一条消息(选择器)被发送到一个无法识别该消息的实例,但我不确定什么是错误的选择器,哪个对象无法识别它

#import "PhotosByPhotographerMapViewController.h"
#import <MapKit/MapKit.h>
#import "Photo.h"

@interface PhotosByPhotographerMapViewController () <MKMapViewDelegate>
@property (weak, nonatomic) IBOutlet MKMapView *mapView;
@property (nonatomic, strong) NSArray *photosByPhotographer;

@end

@implementation PhotosByPhotographerMapViewController

-(void)updateMapViewAnnotations
{

    [self.mapView removeAnnotation: self.mapView.annotations];
    [self.mapView addAnnotations: self.photosByPhotographer];
    [self.mapView showAnnotations: self.photosByPhotographer animated:YES];

}
#导入“photobyphotographrmapviewcontroller.h”
#进口
#导入“Photo.h”
@接口PhotosByPhotographrmapviewcontroller()
@属性(弱,非原子)IBMMapView*mapView;
@属性(非原子,强)NSArray*photosByPhotographer;
@结束
@PhotoshoperMapViewController的实现
-(void)updateMapViewAnnotations
{
[self.mapView removeAnnotation:self.mapView.annotations];
[self.mapView addAnnotations:self.photosBy摄影师];
[self.mapView showAnnotations:self.photosBy摄影师动画:是];
}
此行:

[self.mapView removeAnnotation: self.mapView.annotations];
应该是:

[self.mapView removeAnnotations: self.mapView.annotations];
removeAnnotation:
需要一个注释<代码>删除注释:需要一个注释数组

这将解决您的两个问题


仅供参考-永远不要忽略编译器警告。如果您的代码没有编译干净,它可能会崩溃。

您正在向需要mkannotations的方法(addAnnotations:)发送一个NSArray。首先,使用异常回溯或调试堆栈显示来识别失败的行。然后,通常很明显哪个对象不像看上去的那样,但您可以使用调试器或NSLog检查对象类型以确定。请注意,失败通常发生在iOS代码内部,但如果查看堆栈跟踪,您可以找到调用该代码的位置,通常错误的参数就在那里。@David您有点不对劲
addAnnotations:
确实需要
NSArray
(属于
MKAnnotation
),而不是
MKAnnotation
。谢谢它,它确实崩溃了,当它允许我回答时,我会接受