你能转换吗 - (id)initWithPreset:(int [])preset;(斯威夫特)
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[];
在目标 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))
还要确保目标 C 接口使用 int * 而不是 int[]:
- (id)initWithPreset:(int *)preset
呵呵。