好.当我输入问题时查看了各种答案,并没有看到列出的答案.
这似乎是一个基本的,根本性的问题,我必须做错事,但我被驱使疯了(实际上,并不是一个“驱动器”.更多的是一个短推杆)试图找出我的错误.
我创建了一个测试项目that can be downloaded here(小项目).
无论如何,我在处理导入Swift的大型Objective-C SDK时遇到了这种情况.
一切都很好.直到…我尝试对C中声明的枚举进行比较.
显然,C枚举不会变成Swift枚举,但我无法弄清楚如何使用它们.
以下是您将在测试项目中看到的示例;
#import <Foundation/Foundation.h> typedef enum { StandardEnumType_Undef = 0xFF,StandardEnumType_Value0 = 0x00,StandardEnumType_Value1 = 0x01,StandardEnumType_Value2 = 0x02 } StandardEnumType; typedef NS_ENUM ( unsigned char,AppleEnumType ) { AppleEnumType_Undef = 0xFF,AppleEnumType_Value0 = 0x00,AppleEnumType_Value1 = 0x01,AppleEnumType_Value2 = 0x02 }; StandardEnumType translateIntToEnumValue ( int inIntValue ); int translateEnumValuetoInt ( StandardEnumType inValue ); AppleEnumType translateIntToAppleEnumValue ( int inIntValue ); int translateAppleEnumValuetoInt ( AppleEnumType inValue );
我做了桥接标题和所有这些.
我试图在Swift应用程序的初始加载中使用它们:
func application(application: UIApplication!,didFinishLaunchingWithOptions launchOptions: NSDictionary!) -> Bool { let testStandardConst:StandardEnumType = translateIntToEnumValue ( 0 ) // nope. // if ( testStandardConst.toRaw() == 0 ) // { // // } // This don't work. // if ( testStandardConst == StandardEnumType_Value0 ) // { // // } // Neither does this. // if ( testStandardConst == StandardEnumType_Value0.toRaw() ) // { // // } // Not this one,either. // if ( testStandardConst.toRaw() == StandardEnumType_Value0 ) // { // // } let testAppleConst:AppleEnumType = translateIntToAppleEnumValue ( 0 ) // This don't work. // if ( testAppleConst == AppleEnumType.AppleEnumType_Value0 ) // { // // } // Neither does this. // if ( testAppleConst == AppleEnumType.AppleEnumType_Value0.toRaw() ) // { // // } // nor this. // if ( testAppleConst == .AppleEnumType_Value0 ) // { // // } return true }
我似乎无法得到$#@ !!枚举与int或其他任何内容进行比较.
我经常因为我犯的愚蠢错误而感到谦卑,有时需要他们向我指出,所以请谦卑我.
谢谢!
解决方法
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。