Objc中定义的枚举>在Swift中声明>在Objc中使用

普拉巴夫

我有情况 如果有人对此有解决方案,我将不胜感激

  • 我有一个objCenumAbc
  • 我在一个快速的课堂上宣布这一点,MySwiftClass.swift比如var abc : Abc!
  • mySwiftClass在另一个ObjC类(myObjC.m文件)中创建了MySwiftClass(的实例
  • 在myObjC.m中,我试图以方式访问enum Abc mySwiftClass.abc

这将引发错误-“在MySwiftClass *类型的对象上找不到属性'abc'。基本上,枚举不会作为属性添加到“ ProjectName-Swift.h”文件中。

我相信正在发生的事情是,当我在Swift类中声明ObjC枚举时,它已转换为Swift枚举,因此无法在ObjC文件中访问它。

注意:将Swift类标记为@objc无效。

Swift中的数字可选内容无法在Objective-C中表示,因此不会暴露于Objective-C。声明abc不是可选的,应该可以从Objective-C获得。

考虑以下Objective-C枚举:

typedef NS_ENUM(NSInteger, Foo) {
    FooBar,
    FooBaz,
    FooQux
};

然后考虑这个Swift 3类:

class SomeObject: NSObject {
    var foo1: Foo  = .bar          // this is exposed to Objective-C
    var foo2: Foo! = .bar          // this is not
}

非可选的foo1将会暴露给Objective-C,而可选的foo2则不会。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

什么时候在Swift中使用@objc?

在Swift中使用Comparable扩展@objc协议

在Swift中使用Hashable扩展@objc协议

Swift中使用ObjC编写的消除歧义的重写方法

在 ObjC 中工作,而不是在 swift 中工作。我在 swift 中使用 JSON 解析有什么问题

Objc代码找不到Swift中定义的Bool变量

如何绑定在objc中更改的枚举变量?

Swift中的ObjC协议实现

Swift:在Swift中使用Objective-C中声明的枚举时遇到问题

在Swift中声明和使用位域枚举

在Swift中动态实例化ObjC类(使用NSClassFromString?)

不使用@objc 的 swift 中的可选协议方法

如何在j2Objc中使用枚举

NSMultipleValuesMarker在Swift 3中使用未声明的类型

在Swift 3中使用未声明的类型

在Swift 3中使用未声明的类型“ Decodable” /“ Codable”

swift私有模块映射,尝试从框架内在Swift中使用objC代码

ObjC中的&等于什么?

如何通过在Swift中使用Objc在带按钮的表视图中打开视图控制器?

在具有父视图控制器中公开的objc功能的视图控制器中使用选择器

Swift ViewModel属性无法在ObjC中访问

不带objc的协议中的Swift可选方法

为什么在“ UITapGestureRecognizer”中使用@objc?

在xcode中添加-ObjC标志

在objc中处理Xmpp组

如果类没有以@objc为前缀,是否可以在Objective-C项目中使用用Swift编写的pod?

在Swift 4中,如何使用#selector()处理@objc推理弃用?

使用typedef的struct中的C枚举定义

如何使用@objc标签传递快速枚举