2014-11-25 29 views
1

我在使用Philips Hue SDK(在Swift中使用Bridge头文件导入的Obj-C框架)枚举比较方面存在问题。在Swift中不能正常工作的目标C类型def enum的比较

这是对象 - 枚举:

/******************************************************************************* 
Copyright (c) 2013-2014 Koninklijke Philips N.V. 
All Rights Reserved. 
********************************************************************************/ 

#define SDK_ERROR_DOMAIN @"com.philips.hue.sdk" 

typedef enum { 
    // Resource parsers 
    INVALID_JSON = 1, 
    INVALID_ARGUMENTS = 2, 

    // PHHttpRequester 
    NO_CONNECTION = 21, 
    INVALID_PARAMETERS = 22, 
    INVALID_PARAMETERS_MISSING_URL = 23, 
    INVALID_PARAMETERS_MISSING_METHOD = 24, 
    INVALID_PARAMETERS_INVALID_METHOD = 25, 

    // Bridge Resource Cache Storage 
    LIGHT_ID_NOT_FOUND = 41, 
    SCHEDULE_ID_NOT_FOUND = 42, 
    GROUP_ID_NOT_FOUND = 43, 
    INVALID_DATA = 44, 

    // Pushlinking 
    PUSHLINK_NO_CONNECTION = 60, 
    PUSHLINK_TIME_LIMIT_REACHED = 61, 
    PUSHLINK_NO_LOCAL_BRIDGE = 62, 

    // Unsupported 
    UNSUPPORTED_IN_THIS_VERSION = 80, 

    // Domain objects 
    INVALID_DOMAIN_RESOURCE = 90, 
    INVALID_DOMAIN_RESOURCE_ARGUMENT = 91, 
    UNSUPPORTED_DOMAIN_RESOURCE_ARGUMENT = 92, 

    CLIP_ERROR = 100 
} CLErrorCode; 

/** 
    General purpose NSError derived object that is used for SDK errors 
    Enum of error codes identifies error types 
*/ 
@interface PHError : NSError 

@end 

在对象 - 样本项目中,他们比较枚举的错误代码是这样的:

enter image description here

我的SWIFT代码看起来是这样的我得到以下错误: enter image description here

我发现这个问题:Equality on Objective-C typedef enum in Swift

但它不适合我。我已经尝试过...

error.code.value = PUSHLINK_NO_CONNECTION.value 
error.code = PUSHLINK_NO_CONNECTION.value 
error.code = .PUSHLINK_NO_CONNECTION 
... 

没有什么工作:(

回答

0

您是否尝试过使用rawValue 事情是这样的:?

error.code.value == CLErrorCode.PUSHLINK_NO_CONNECTION. rawValue