我得到:由于未捕获的异常'NSInvalidUnarchiveOperationException'终止应用程序,原因:'无法实例化名为MKMapView的类'

时间:2011-11-21 19:26:32

标签: iphone objective-c ios mapkit

当然我用Google搜索并在stackoverflow中使用了搜索。 我发现了一些类似的讨论:

Could not instantiate class named MKMapView

http://forums.bignerdranch.com/viewtopic.php?f=49&t=490

NSInvalidUnarchiveOperationException: cannot decode object of class (UITableViewCellContentView)

......还有很多副本:)

但是,我没有使用SDK 3.2而是5.0(其中一个链接的讨论表明它在SDK 3.2的某些测试版中是错误的)。

其他讨论和答案表明框架MapKit未正确包含在内。 我按照这些说明尝试了几种方法。

我仍然收到此错误。它出现在

    [super loadView];

在我自己的视图控制器中

- (void)loadView {

方法。视图本身是在IB中构建的。除了其他项目之外还有一个MKMapView。

我在两个xcode项目中使用MKMapView。两者都是在xcode 3.2中启动的,现在已迁移到xcode 4。 在其中一个项目中,代码工作正常,在另一个项目中,我得到了这个运行时错误。 我没有发现这些项目的设置之间有任何重大差异可以解释这种不同的行为。

目前的解决方法是取消与地图视图相关的任何代码(和IB项)。但最后我宁愿包含那个地图视图,因为它确实有用的目的:)

任何建议表示赞赏。

赫尔曼

2 个答案:

答案 0 :(得分:8)

转到目标设置 - 不是项目级别,而是目标级别。单击Build Phases,然后展开Link Binary with Libraries。确保列出了MapKit.framework,如果没有,则添加它。

答案 1 :(得分:0)

使用Xcode 7.2添加Framework可以通过3种方式完成。

1。在目标下选择项目 - >点击常规标签 - >展开与图书馆相关联的框架 - >点击 + 图标 - >搜索MapKit - >点击添加。

2。在目标下选择项目 - >点击功能 - >在地图下 - > 点击切换按钮

3。在目标下选择项目 - >点击构建阶段 - >展开与图书馆相关联的框架 - >点击 + 图标 - >搜索MapKit - >点击添加。