dyld:符号未找到:__TWPVs11AnyHashables20_AnyHashableProtocols

4

当我将XCode更新到8.3后,我的应用程序开始崩溃,并显示以下错误:

  dyld: Symbol not found: __TWPVs11AnyHashables20_AnyHashableProtocols
  Referenced from: /Users/faidmit/Library/Developer/CoreSimulator/Devices/C7E102B3-69B4-42EC-A699-0D2FDF768A86/data/Containers/Bundle/Application/341C0D73-B57B-4E30-A639-3A23B1D7CAA6/MVP-INT.app/Frameworks/Alamofire.framework/Alamofire
  Expected in: /Users/faidmit/Library/Developer/CoreSimulator/Devices/C7E102B3-69B4-42EC-A699-0D2FDF768A86/data/Containers/Bundle/Application/341C0D73-B57B-4E30-A639-3A23B1D7CAA6/MVP-INT.app/Frameworks/libswiftCore.dylib

我尝试过以下方法:

  • 清理并重启。
  • 在“嵌入式二进制文件”中可用框架。
  • 我改变了顺序,确保它是最后一个被加载的(从解决方案中尝试,提到CFNetwork应该在Foundation之后等)。
  • 将Alamofire设置为可选。

我通过为相同的部署目标构建框架来解决了错误。现在我应该删除这个问题还是让它存在? - SagarU
2个回答

2
对于大多数遇到相同问题的人来说,问题本身提到的步骤可能会起作用(按照相同的顺序)。我所做的是一种最后的努力。在回滚更新之前,我想尝试一些东西。步骤如下:
  1. 检查项目的“部署目标”(对我而言,这是8.1)
  2. GitHub下载 Alamofire 并检查“部署目标” (8.0)。
  3. Alamofire 的“部署目标”更改为与您的项目相匹配的目标(8.1)。
  4. 编译并将生成的 .framework 包含在项目中。
我同意这不是一种通用的方法。特别是如果您正在使用Pods的话,可能会很困难。因为我没有使用Pods,所以这个方法适用于我。

2

对我来说,删除应用程序的派生数据解决了问题。在Xcode 8.3中,可以通过转到XCode > 首选项 > 位置来完成此操作。您将在那里找到派生数据的路径,并在其旁边找到一个右箭头。单击箭头应启动Finder并显示Derived Data的路径。然后,您应该查找任何以您的应用程序名称开头的文件夹并将其删除。


不知何故,删除派生数据对我没有起作用。从库中删除整个Xcode缓存也没有用。虽然很高兴它对你有用。 - SagarU

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接