【问题标题】:Could not instantiate class named MKMapView无法实例化名为 MKMapView 的类
【发布时间】:2011-04-01 03:02:24
【问题描述】:

我可能在这里做一些非常愚蠢的事情,因为我以前做过并且它有效,现在......

创建了一个新的 iPad 项目,在详细信息视图中我添加了一个 MKMapView,将 MapKit.framework 添加到项目中,将属性 / 等添加到标题中。去运行项目并获得一个 SIGABRT

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

我找到了http://mithin.in/2009/06/22/using-iphone-sdk-mapkit-framework-a-tutorial/,但是,就像我说的,我已经添加了框架。我错过了什么?

【问题讨论】:

    标签: ios ipad mkmapview


    【解决方案1】:

    我也遇到了这个问题,但是按照您链接中第 2 步的说明,我能够通过它(顺便说一句,谢谢):

    1. 将 MapKit 框架添加到项目中。 (控制 + 单击框架 文件夹 -> 添加 -> 现有框架)

    我刚刚搜索了 MapKit.framework,将其添加到项目中,错误消失了。

    我还没有添加任何地图代码(虽然我确实在 IB 中连接了一个 MapViewDelegate),但到目前为止它工作正常!

    【讨论】:

    • 很高兴它有帮助!我终于通过执行以下操作让它工作了: - 清理项目 - 重置设备 - 重启机器 不确定哪个是必要的,但它现在可以工作了 :)
    • 添加 MapKit 框架也对我有用。我的代码调出了地图,一切正常。
    • 如果有人在使用 xcode 4.2 时遇到此问题,即使在添加框架后框架出现在 Frameworks 文件夹中,我也会收到错误消息。我单击目标,然后单击 Build Phases,并注意到它不在 Link Binary with Library 部分中。将它从框架文件夹拖到该部分可以解决问题。感谢您的提示,
    • 有点遗憾,当您(从 Iterface Builder)拖动未在项目中链接的视图时,它不会警告您。
    【解决方案2】:

    单击您的项目以带来项目设置。在 Targets 下,单击您的项目,从上方工具栏中选择“Build Phases”。在“Link binary With Libraries”选项卡下,您将看到项目中包含的框架列表。单击“+”按钮,然后将显示列表中的 MapKit 库添加到您的项目中。

    【讨论】:

      【解决方案3】:

      对于 Xcode 6.1:

      • 选择您的项目
      • 在常规选项卡中,查找 Linked Frameworks and Libraries(最后一个)
      • 按+键
      • 搜索 MapKit.framework
      • 最后添加

      【讨论】:

        【解决方案4】:

        简单的方法!

        适用于 Xcode 7.2 版

        就我而言,从功能中选择 MAPS 会自动将您的框架链接到您的项目,您只需检查 Capabilities -> Maps 中的 Maps 按钮。

        附上截图。 干杯!!

        【讨论】:

        • 这也适用于 Xcode 版本 8。在“Capabilities”下打开“Maps”后,表示将链接 MapKit.framework。您还可以通过转到“构建阶段”并展开“将二进制文件与库链接”部分来确认这一点。您也应该在那里看到 MapKit.framework。
        【解决方案5】:

        对于 xCode 4.2:

        Click on your project name ->targets ->building Phase ->link binary with library 
          -> click on + sign ->select mapKit.framework ->click add
        

        【讨论】:

          【解决方案6】:

          我注意到当我在模拟器上构建和运行时,我收到了这条消息(在这篇文章中提到的原始消息之上):

          ld:警告:忽略文件 /Users/peter/programming/iPhone/iNspector/MapKit.framework/MapKit, 文件是为不受支持的文件格式构建的,它不是 正在链接的架构 (i386)

          然后我只是连接了我的 iPhone,在设备上构建并运行,地图就可以工作了。

          看来MapKit框架不能在386架构上编译,需要设备。

          【讨论】:

            【解决方案7】:

            关于@futureshocked 的意见,我也遇到了

            Id:警告:忽略文件 /blah.../MapKit,文件是为不受支持的文件格式构建的,该文件格式不是所链接的体系结构 (i386)

            问题。

            **检查以确保您在将MapKit 框架添加到项目时没有将其复制到本地项目目录中。我不小心这样做了,XCode 给了我上述错误。所以我将它从我的项目目录(在 Finder 中)中删除,重新编译,一切又正常了。

            如果您的项目中没有框架,请按照answer above 中的说明重新链接。

            找到了一个很好的 MapKit 入门教程:
            http://www.youtube.com/watch?v=X-3jM24EIGM&feature=related

            【讨论】:

              【解决方案8】:

              我在尝试部署到我的 5.1 手机(使用 XC 4.5)时也收到此错误,即使在将我的部署目标更改为 5.1 之后也是如此。看起来地图更新不会飞,因为我的手机上还有谷歌地图。更新手机操作系统后,异常消失。

              【讨论】:

              • 仅删除带有地图定义的文件是否就足够了?
              【解决方案9】:

              请在您的构建阶段导入 WebKit。

              【讨论】:

              • WebKitMKMapView 有什么关系?
              猜你喜欢
              • 2014-07-28
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2014-04-23
              • 2012-10-23
              • 1970-01-01
              • 2012-11-17
              • 2020-05-18
              相关资源
              最近更新 更多