gpt4 book ai didi

ios - 如何在 iOS 8 Swift 框架公共(public) API 中使用枚举

转载 作者:搜寻专家 更新时间:2023-10-31 23:05:00 24 4
gpt4 key购买 nike

我正在尝试使用 Swift 或 Objective C 创建一个可供其他 iOS 8 应用程序使用的 Swift 框架。

在我的一些公共(public)函数中,我需要使用枚举。当然,Swift 有枚举,但这些与使用 Objective C 的客户端应用程序不兼容。所以我尝试使用以下形式的 Objective C 样式枚举:

typedef NS_ENUM(NSInteger, MyEnumType)
{
MyEnumTypeGreen,
MyEnumTypeBlue,
MyEnumTypeYellow
};

为了公开此枚举类型,我将此声明放在 PublicEnums.h 中。要从我的 Swift 代码访问,我需要在我的框架项目的 Bridging-Header.h 中使用这一行:

#import "PublicEnums.h"

但是我得到了这个错误:

Include of non-modular header inside framework module 'MyFramework' which flags a line in the auto-generated MyFramework-Swift.h file:

#import "/Users/sourcepath.../ObjectiveC/MyFramework-Bridging-Header.h"

真的没有办法在 Swift 框架中使用可从 Objective C 应用程序使用的任何类型的枚举吗?

最佳答案

我刚刚在一个新项目中对此进行了测试,一切正常。我认为你的错误是由于没有正确使用桥接头。

我认为您不应该使用 import 语句导入桥接 header 。它应该自动添加到桥接 header 键下目标的build设置中:

Objective-C Bridging Header ------     projectName/projectName-Bridging-Header.h

此 key 的原始名称是 SWIFT_OBJC_BRIDGING_HEADER

测试:

    let x = MyEnumType.Blue
println("\(x.toRaw())") // 1

请注意,在 Xcode 6.1 中,最后一行将使用 rawValue

关于ios - 如何在 iOS 8 Swift 框架公共(public) API 中使用枚举,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26146908/

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