iphone - swift (id)initWithPreset 中的转换 :(int [])preset

标签 iphone swift

你可以转换 - (id)initWithPreset:(int [])preset; 在 swift

int *type = nil;
    if (_selectedIndex == 0) {
        type = PRESET_PHONE;
    } 

extern int PRESET_FM[];
extern int PRESET_CD[];
extern int PRESET_STUDIO[];
extern int PRESET_VOICE[];
extern int PRESET_PHONE[];
extern int PRESET_TAPE[];
extern int PRESET_HIFI[];

在 objective-c

  MP3Converter *mp3Converter = [[MP3Converter alloc] initWithPreset:type];

但是我在 Swift 中使用

var mp3Converter : MP3Converter!
            mp3Converter = MP3Converter(preset:PRESET_VOICE )

我们如何提供预设:PRESET_VOICE?它给出错误不安全不可变指针..

最佳答案

问题似乎出在您定义常量数组的方式上。

您需要将它们定义为整数指针,而不是数组。检查:

//const int  PRESET_FM[] = {1, 2, 4, 5};  //<< This won't get exported to swift
const int * PRESET_FM = {1, 2, 4, 5}; //Swift can see this fine

在你的 swift 代码中,你需要正确地将这个 C 常量类型转换为 UnsafeMutablePointer,因为 Swift 会看到 C 指针。

var mp3Converter : mp3Converter = MP3Converter(preset:UnsafeMutablePointer<Int32>( PRESET_FM)(PRESET_VOICE))

同时确保 objective-c 接口(interface)使用int *而不是int[]:

- (id)initWithPreset:(int *)preset  

HTH。

关于iphone - swift (id)initWithPreset 中的转换 :(int [])preset,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35354859/

相关文章:

Swift '无法使具有标识符 intervalCellIdentifier 的单元格出队

iphone - iOS如何确定收到的通知是针对MDM的?

iphone - 同步 AFNetworking 调用

iphone - 确定 iPhone 上是否启用了飞行模式?

iphone - 在 objective-c /iOS 中将日期字符串转换为 NSDate

iphone - 错误 - 服务无效。请检查您的设置并重试。 (0xE8000022)

ios - 如何将 Firebase cocoaPods 集成到我的自定义 swift 框架中?

json - 根据 ID 从 JSON 中检索数据

ios - 如何在另一个 ViewController 前面将 UITableViewController 显示为向上滑动手势?

ios - 在 Swift 2.3 中导航到 UIViewController