将Obj-c iOS应用程序转换为Swift时出现链接器错误

时间:2014-11-23 23:04:57

标签: ios objective-c xcode swift

我有一个用Objective-C编写的iOS应用程序,我想将其转换为Swift。根据Apple的Using Swift with Cocoa and Objective-C,我添加了一个新的Swift文件,其名称与它正在替换的Objective-C类相同,放入存根类声明,并从目标中删除原始的Objective-C类。

错误报告在链接时找不到类的符号:

Undefined symbols for architecture x86_64:
  "_OBJC_CLASS_$_Chunk", referenced from:
      objc-class-ref in ViewController.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

这是我的存根类声明:

import Foundation

@objc class Chunk {

}

我可以查看一些链接器设置吗?

是的,我已经清理了我的项目,删除了我的派生数据文件夹和confirmed that the Swift file is in the Compile Sources section of the Build Phases

我现在也通过在https://github.com/dpassage/Foo提供的Xcode 6.1.1中创建的全新项目重现了这个问题。

1 个答案:

答案 0 :(得分:1)

在您的链接(Apple Dev)上......您必须再次检查"将Swift导入Objective-C" :)

ViewController.m中删除此行:#import "Chunk.h" 并添加以下行:#import "Foo-Swift.h"

&#34;文件:<#YourProjectName#>-Swift.h应该已经在项目中自动创建,即使您看不到它。&#34;

<强>更新

如果Chunk.swift是Objective-C类的后代..将此@objc class Chunk替换为:@objc class Chunk : NSObject(或根据您的要求加上)。 如果不是......检查&#34;在Objective-C&#34;中使用PURE Swift类从这里https://stackoverflow.com/a/24005242/1702413