Reputation: 936
I have enum NS_OPTION declared in Objective C as such
typedef NS_OPTIONS(NSUInteger, PHRendererType)
{
PHRendererTypeSampleBuffer,
PHRendererTypeOpenGLES,
PHRendererTypeQuartz
};
however, when i try to use in Swift project by calling.
if rendererType == .PHRendererTypeSampleBuffer{
}
it fails to compile with error : Type of expression is ambiguous without more context.
I have also visited this topic Swift: Trouble Using Enums Declared in Objective-C, In Swift but it did not solve my problem
Thanks for any help.
Upvotes: 4
Views: 904
Reputation: 93181
The question you linked to did provide a solution to your problem:
if rendererType == .SampleBuffer {
}
When you define your enum as NS_OPTIONS(type, EnumPrefix)
, remove the EnumPrefix
from all references in Swift. However, be aware that this shortcut will not be valid the moment you break the naming convention in Objective-C:
// 1.
typedef NS_OPTIONS(NSUInteger, PHRendererType)
{
PHRendererTypeSampleBuffer,
PHRendererTypeOpenGLES,
PHRendererTypeQuartz,
SomethingElse
};
// Now you have to use the full enum name:
if renderedType == .PHRendererTypeSampleBuffer { }
// 2. Follow the naming convention and you can use the shortcut again:
typedef NS_OPTIONS(NSUInteger, PHRendererType)
{
PHRendererTypeSampleBuffer,
PHRendererTypeOpenGLES,
PHRendererTypeQuartz,
PHRendererTypeSomethingElse
};
if renderedType == .SomethingElse { }
Upvotes: 1