gpt4 book ai didi

ios - 无法在 Objective-C 中使用 Swift 类

转载 作者:行者123 更新时间:2023-11-30 10:46:28 24 4
gpt4 key购买 nike

我尝试将 Swift 代码集成到我的应用程序中。我的应用程序是用 Objective-C 编写的,并且我添加了一个 Swift 类。我已经完成了here描述的所有事情。但我的问题是 Xcode 尚未创建 -Swift.h 文件,仅创建了桥接 header 。所以我创建了它,但它实际上是空的。我可以在 Swift 中使用所有 ObjC 类,但反之亦然。我用 @objc 标记了我的 swift 类,但没有帮助。我现在能做什么?

编辑:Apple 说:“当您将 Swift 代码导入 Objective-C 时,您依靠 Xcode 生成的 头文件将这些文件公开给 Objective-C。[...]该 header 的名称是您的产品模块名称,后跟“-Swift.h”。“

现在当我想导入该文件时,它给出了一个错误:

    //MainMenu.m

#import "myProjectModule-Swift.h" //Error: 'myProjectModule-Swift.h' file not found

@implementation MainMenu

这是我的 FBManager.swift 文件:

@objc class FBManager: NSObject {

var descr = "FBManager class"

init() {
super.init()
}

func desc(){
println(descr)
}

func getSharedGameState() -> GameState{
return GameState.sharedGameState() //OK! GameState is written in Objective-C and no error here
}
}

最佳答案

我花了大约 4 个小时尝试在我的基于 Objective-C 的 Xcode 项目中启用 Swift。我的 myproject-Swift.h 文件已成功创建,但我的 Xcode 没有看到我的 Swift-classes。因此,我决定创建一个新的基于 Objc 的 Xcode 项目,最后,我找到了正确的答案!希望这篇文章会对某人有所帮助:-)

逐步 Swift 集成基于 Xcode Objc 的项目:

  1. 创建新的 *.swift 文件(在 Xcode 中)或使用 Finder 添加它。
  2. 当 Xcode 询问时,创建一个 Objective-C 桥接 header
  3. 实现您的 Swift 类:

    import Foundation

    // use @objc or @objcMembers annotation if necessary
    class Foo {
    //..
    }
  4. 打开build设置并检查这些参数:

    • 定义模块:

      Copy & Paste parameter name in a search bar

    • 产品模块名称: myproject

      Make sure that your Product Module Name doesn't contain any special characters

    • 安装 Objective-C 兼容性 header :

      Once you've added *.swift file to the project this property will appear in Build Settings

    • Objective-C 生成的接口(interface) header : myproject-Swift.h

      This header is auto-generated by Xcode

    • Objective-C 桥接 header : $(SRCROOT)/myproject-Bridging-Header.h
  5. 在 *.m 文件中导入 Swift 接口(interface) header 。

    #import "myproject-Swift.h"

    Don't pay attention to errors and warnings.

  6. 清理并重建您的 Xcode 项目。
  7. 利润!

关于ios - 无法在 Objective-C 中使用 Swift 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55656572/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com