我有一个用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中创建的全新项目重现了这个问题。
答案 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