我正在使用wahoo Fitness API,它定义了以下Objective-C枚举:
typedef enum
{
/** No active connection. */
WF_SENSOR_CONNECTION_STATUS_IDLE,
/** The connection is in process of being established. */
WF_SENSOR_CONNECTION_STATUS_CONNECTING,
/** The sensor connection is established and active. */
WF_SENSOR_CONNECTION_STATUS_CONNECTED,
/** The connection was interrupted (usually occurs when fisica is disconnected). */
WF_SENSOR_CONNECTION_STATUS_INTERRUPTED,
/** The connection is in process of being disconnected. */
WF_SENSOR_CONNECTION_STATUS_DISCONNECTING,
} WFSensorConnectionStatus_t;
我找不到快速使用它的方法。我首先尝试对其进行切换/操作,但未成功。我正要继续进行以下操作:
var connState : WFSensorConnectionStatus_t = WF_SENSOR_CONNECTION_STATUS_IDLE
...
if( connState == WF_SENSOR_CONNECTION_STATUS_IDLE){
但是它不能编译:
'WFSensorConnectionStatus_t' is not convertible to 'NSObject'
任何解决方法?我阅读使用WFSensorConnectionStatus_t.WF_SENSOR_CONNECTION_STATUS_IDLE
,WF_SENSOR_CONNECTION_STATUS_IDLE.value
但在xcode
beta-4中不起作用。
如您所说,从.beta 4开始,使用.value获取基础整数的解决方法不再起作用。
不幸的是an enum
不能从Objective-C转移到Swift,它必须是an NS_ENUM
。
我在一个需要enum
从Objective-C框架中进行移植并在Swift中使用它的项目中,具有与您相同的设置。
我所做的解决方法是创建一个包含的Objective-C类别,NS_ENUM
然后将值从框架enum
传递到自己的NS_ENUM
。
将类别导入桥接头中,您应该可以像平常一样使用enum
。
像这样:
typedef NS_ENUM(NSUInteger, ConnectionStatus) {
ConnectionStatusIdle
}
- (ConnectionStatus)connectionStatus {
if [self getConnectionStatus] == WF_SENSOR_CONNECTION_STATUS_IDLE {
return ConnectionStatusIdle
}
}
然后,您应该可以像这样使用它:
switch myObject.connectionStatus() {
case .Idle:
// do something
break
}
主要内容:1. Objective-C集合快速枚举是Objective-C的功能,用于枚举集合。 因此,要了解快速枚举,首先需要了解集合,这将在下一节中进行说明。 1. Objective-C集合 集合是基本结构。它用于保存和管理其他对象。 集合的主要目的是提供一种有效存储和检索对象的通用方法。 有几种不同类型的集合。 虽然它们都能实现能够容纳其他对象的相同目的,但它们的主要区别在于检索对象的方式。 Objective-C中使用的最常见的
问题内容: 背景 我正在尝试使用NSCoding协议对String样式的枚举进行编码,但是我遇到了转换为String和从String返回的错误。 解码和编码时出现以下错误: 字符串不可转换为舞台 额外参数ForKey:通话中 码 问题答案: 您需要将枚举值与原始值进行转换。在Swift 1.2(Xcode 6.3)中,如下所示: Swift 1.1(Xcode 6.1),代替: 迅速1.0(6.0
你能在Swift中继承枚举吗?关于枚举继承,应该知道哪些规则? 以下测试代码: 产生
快速枚举是Objective-C的功能,有助于枚举集合。 因此,为了了解快速枚举,我们首先需要了解集合,这将在下一节中进行说明。 Objective-C中的集合 集合是基本结构。 它用于保存和管理其他对象。 集合的整个目的是提供一种有效存储和检索对象的通用方法。 有几种不同类型的集合。 虽然它们都能实现能够容纳其他对象的相同目的,但它们的主要区别在于检索对象的方式。 Objective-C中使用的
问题内容: 我需要定义一个可以在使用某些Objective-c类型的类中调用的协议 但是这样做不起作用: 你明白他的错误 如果我没有在协议上放置@objc标记,则它将在采用该协议并从Objective- C类型类(如UIViewController)继承的类中被调用时立即使应用程序崩溃。 所以我的问题是,我应该如何使用@objc标签声明并传递我的枚举? 问题答案: Swift枚举与Obj-C(或C