扩展名为“架构arm64的未定义符号”

时间:2016-07-02 10:24:51

标签: ios xcode swift nsdata

我的应用程序构建正常,但现在我正在尝试构建存档,我收到此错误:

Undefined symbols for architecture arm64:
  "type metadata for (extension in TwIM):__ObjC.NSData.ImageType", referenced from:
      static TwIM.ImageCache.imagePath (imageURL : __ObjC.NSURL, imageType : (extension in TwIM):__ObjC.NSData.ImageType?) -> Swift.String? in ImageCache.o
      function signature specialization <Arg[0] = Owned To Guaranteed and Exploded> of static TwIM.ImageCache.imagePath (identifier : Swift.String, imageType : (extension in TwIM):__ObjC.NSData.ImageType?) -> Swift.String? in ImageCache.o
      function signature specialization <Arg[0] = Owned To Guaranteed and Exploded> of static TwIM.ImageCache.imageData (identifier : Swift.String, imageType : (extension in TwIM):__ObjC.NSData.ImageType?) -> __ObjC.NSData? in ImageCache.o
      function signature specialization <Arg[0] = Owned To Guaranteed and Exploded> of static TwIM.ImageCache.image (identifier : Swift.String, imageType : (extension in TwIM):__ObjC.NSData.ImageType?) -> Swift.AnyObject? in ImageCache.o
      function signature specialization <Arg[0] = Owned To Guaranteed, Arg[1] = Owned To Guaranteed and Exploded> of static TwIM.ImageCache.saveImage (imageData : __ObjC.NSData, identifier : Swift.String, imageType : (extension in TwIM):__ObjC.NSData.ImageType?) -> Swift.Bool in ImageCache.o
      function signature specialization <Arg[0] = Owned To Guaranteed and Exploded> of static TwIM.ImageCache.removeImage (identifier : Swift.String, imageType : (extension in TwIM):__ObjC.NSData.ImageType?) -> () in ImageCache.o
ld: symbol(s) not found for architecture arm64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

它指的是我在NSData上的扩展,其中包含一个枚举:

extension NSData {
  enum ImageType: String {
    case jpg = "jpg"
    case png = "png"
    case gif = "gif"
  }
}

我不知道为什么这会导致问题。我已经清理过,并清除了一些人建议的派生数据。

3 个答案:

答案 0 :(得分:3)

你使用哪个Xcode和哪个Swift版本?

我首先使用Xcode 8和Swift 3 beta 6发现了这条错误消息。我查看了我导入的内容,但它只是所有文件的Cocoa。有这样的几个错误,几乎都属于一个非常大的函数。如果选择了Global-Module-Optimization,则只会发生错误,无论是运行还是归档。

所以我将这个功能划分为6个较小的部分来查看,哪一个导致了问题。使功能变小后,只剩下这种错误。所以我认为它是一个链接器/优化器 - 在我的情况下问题,因为代码是相同的,只分为几个小函数。

请尝试为发布选择单文件优化并尝试存档。错误会再次出现还是您成功了?

我想,这在最终版本中不会出现问题。

答案 1 :(得分:0)

我也有这个问题。我通过以下操作解决了这个问题: 1.转到构建设置。 2.搜索启用testablility。 2.为调试设置否。

答案 2 :(得分:0)

尝试摆脱枚举。这就是为我解决的问题。也许扩展中的枚举存在问题。