将 Swift 导入 Objective-C - “使用未声明的标识符”

Posted

技术标签:

【中文标题】将 Swift 导入 Objective-C - “使用未声明的标识符”【英文标题】:Import Swift into Objective-C - "use of undeclared identifier" 【发布时间】:2019-01-14 12:49:37 【问题描述】:

我无法将 Swift 类导入到 Objective-C。

Xcode 版本:10.1 斯威夫特:4.2

我的步骤:

    创建名为“test”的空单视图 Objective-C 项目。

    创建 Swift 类 (mytestclass.swift)

    创建桥接空标题“test-Swift.h”

    尝试像这样在ViewController.m中使用:#import "test-Swift.h" [[MyTestClass init] calculate];

mytestclass.swift

import Foundation

@objc public class MyTestClass: NSObject 

    @objc public func calculate() 
        print("TEST")
    

编译后我得到:

/Users/xxx/Desktop/test/ViewController.m:19:7: 使用未声明 标识符“MyTestClass”

我错过了什么?

【问题讨论】:

【参考方案1】:

你的问题出在步骤

3- 创建桥接空标题“test-Swift.h”

您不应该手动创建该文件,因为它是在您将 swift 文件添加到 Objective-C 时创建的,您还需要替换此行

[[MyTestClass init] calculate];

[[[MyTestClass alloc] init] calculate];

[[MyTestClass new] calculate];

这是一个有效的demo

【讨论】:

它不起作用。它根本看不到 MyTestClass。 我创建了一个演示检查它 谢谢!事实证明,手动创建的文件“test-Swift.h”会导致这个问题。因此,在跳过第 3 步之后,它就可以工作了!

以上是关于将 Swift 导入 Objective-C - “使用未声明的标识符”的主要内容,如果未能解决你的问题,请参考以下文章

将 Swift 导入 Objective-C:未创建 Objective-C 标头“-Swift.h”

将 Swift 导入 Objective-C - “使用未声明的标识符”

将 Objective-C 框架(CocoaPod)导入 Swift?

无法使用桥接头将 Objective-C 文件导入 Swift 项目

无法使用桥接头将 Objective-C 文件导入 Swift 项目

将实现协议的 Swift 类导入到 Objective-C 类中