将一系列枚举从Swift桥接到Objective-C

斯蒂芬·索默

从Swift 1.2开始,就可以将Swift中的枚举自动转换为Objective-C。但是,据我所知,不可能转换一个枚举数组。这是真的?

因此,这是可能的:

@objc public enum SomeEnumType: Int {
    case OneCase
    case AnotherCase
}

但这不是:

public func someFunc(someArrayOfEnums: Array<SomeEnumType>) -> Bool {
    return true
}

有人可以验证吗?您如何建议解决此问题?一种方法是具有两个方法声明,例如:

// This will not automatically get bridged.
public func someFunc(someArrayOfEnums: Array<SomeEnumType>) -> Bool {
    return true
}

// This will automatically get bridged.
public func someFunc(someArrayOfEnums: Array<Int>) -> Bool {
    return true
}

但这会污染Swift界面。隐藏任何Swift使用者的第二个函数声明的任何方法?

林太郎

看来,Array<SomeEnumType>即使SomeEnumTypeis ,我们也无法向Obj-C公开参数@objc

解决方法是:

@objc(someFunc:)
func objc_someFunc(someArrayOfEnums: Array<Int>) -> Bool {
    return someFunc(someArrayOfEnums.map({ SomeEnumType(rawValue: $0)! }))
}

func someFunc(someArrayOfEnums: Array<SomeEnumType>) -> Bool {
    return true
}

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

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

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

用 C 将一系列数字写入文件

将Swift 4枚举桥接到目标C

如何将Swift String桥接到Objective C NSString?

将 PDF 转换为一系列图像 C#

将Swift桥接到React-Native时,“不是公认的Objective-C方法”

如何将Objective-C initWithError:方法桥接到Swift

使用OpenCV / C ++读取一系列帧

C++ - 计算一系列数字的数字

C ++程序输出一系列数字而不是cout

C - 一系列 if 语句与 else if 时间测量

使用closedXML和C#将一系列单元格值放入列表中

将Swift初始化程序桥接到目标C

自动将C结构函数桥接到Swift方法

将一系列整数从一个程序的 cout 读取到 C++ 中另一个程序的 cin 中

将一系列数据行复制到另一个数据表-C#

在 C# 中运行一系列值的所有可能组合

验证是否可以根据一系列(a,b,c)的组合生成数字X

如何在C ++中创建Comparable接口并传递一系列可比对象?

在C ++中,switch语句中可以有一系列值吗?

如何在C#中获取一系列包含某些“价格”的XML元素

C程序根据给定的时间戳找到一系列值的窗口平均值

如何在 C++11 中创建一系列索引的迭代器?

用C#构建一系列验证结果的N个深度结构

在C中的一系列浮点数上循环

嵌套if ... else语句如何胜过一系列C ++中的单选if语句

如何用C++消除一系列中的某些数字?

如何在C ++中正确推回向量中的一系列对象?

计算C中一系列字符串中的元音数量

c#datatable使用compute来计算一系列行的平均值