lenhhoxung
lenhhoxung

Reputation: 2776

Access enum written in Objective C from Swift

I'm integrating MAImagePickerController (written in Objective-C) in my Swift project. The integration of the library is OK and I can build the project. However, When using, I couldn't set property sourceType of MAImagePickerController. Following is the code in Swift:

let imagePicker:MAImagePickerController = MAImagePickerController()
imagePicker.delegate = self
imagePicker.sourceType = .MAImagePickerControllerSourceTypeCamera

And it shows the error:

Type 'UnsafeMutablePointer has no member 'MAImagePickerControllerSourceTypeCamera'

Following is the declaration of enum type MAImagePickerControllerSourceType

typedef NS_ENUM(NSInteger, MAImagePickerControllerSourceType)
{
    MAImagePickerControllerSourceTypeCamera,
    MAImagePickerControllerSourceTypePhotoLibrary
};

And this is how they use it in Objective-C:

MAImagePickerController *imagePicker = [[MAImagePickerController alloc] init];
[imagePicker setDelegate:self];
[imagePicker setSourceType:MAImagePickerControllerSourceTypeCamera];

For Swift code, I didn't use method setSourceType because it refers to the default sourceType of UIImagePickerView.

Upvotes: 0

Views: 369

Answers (2)

lenhhoxung
lenhhoxung

Reputation: 2776

Based on vadian's suggestion and my observation, following is the solution: - Step 1: Change property sourceType to normal enum type (not pointer - remove asterisk character

@property MAImagePickerControllerSourceType sourceType;

- Step 2: Use vadian's answer

imagePicker.sourceType = .Camera

And it just works.

Upvotes: 1

vadian
vadian

Reputation: 285290

When transfering ObjC enums to Swift usually the whole type prefix is omitted.

imagePicker.sourceType = .Camera

Upvotes: 0

Related Questions