我的应用程序构建正常,但现在我正在尝试构建存档,我收到此错误:
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"
}
}
我不知道为什么这会导致问题。我已经清理过,并清除了一些人建议的派生数据。
答案 0 :(得分:3)
你使用哪个Xcode和哪个Swift版本?
我首先使用Xcode 8和Swift 3 beta 6发现了这条错误消息。我查看了我导入的内容,但它只是所有文件的Cocoa。有这样的几个错误,几乎都属于一个非常大的函数。如果选择了Global-Module-Optimization,则只会发生错误,无论是运行还是归档。
所以我将这个功能划分为6个较小的部分来查看,哪一个导致了问题。使功能变小后,只剩下这种错误。所以我认为它是一个链接器/优化器 - 在我的情况下问题,因为代码是相同的,只分为几个小函数。
请尝试为发布选择单文件优化并尝试存档。错误会再次出现还是您成功了?
我想,这在最终版本中不会出现问题。
答案 1 :(得分:0)
我也有这个问题。我通过以下操作解决了这个问题: 1.转到构建设置。 2.搜索启用testablility。 2.为调试设置否。
答案 2 :(得分:0)
尝试摆脱枚举。这就是为我解决的问题。也许扩展中的枚举存在问题。