访问来自Swift的Objective C编写的枚举

时间:2015-10-31 21:13:45

标签: objective-c swift uiimagepickercontroller

我在我的Swift项目中集成了MAImagePickerController(用Objective-C编写)。库的集成是可以的,我可以构建项目。但是,在使用时,我无法设置sourceType的属性MAImagePickerController。以下是Swift中的代码:

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

它显示错误:

  

键入' UnsafeMutablePointer没有   会员' MAImagePickerControllerSourceTypeCamera'

以下是枚举类型MAImagePickerControllerSourceType

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

这就是他们在Objective-C中使用它的方式:

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

对于Swift代码,我没有使用方法setSourceType,因为它引用了UIImagePickerView的默认sourceType

2 个答案:

答案 0 :(得分:1)

根据vadian的建议和我的观察,以下是解决方案: - 步骤1:将属性sourceType更改为普通枚举类型(不是指针 - 删除星号字符

@property MAImagePickerControllerSourceType sourceType;

- 第2步:使用vadian的回答

imagePicker.sourceType = .Camera

它只是有效。

答案 1 :(得分:0)

将ObjC枚举转移到Swift时,通常会省略整个类型前缀。

imagePicker.sourceType = .Camera