Я работаю над приложением Swift, которое обращается к библиотеке C.
Файл .h содержит структуру typedef:
typedef struct _DATA_KEY_ * CURRENT_DATA_KEY;
И есть метод в другом классе:
-(int) initWithKey(CURRENT_DATA_KEY * key);
Мне нужно создать CURRENT_DATA_KEY в моем коде. Не уверен, как я могу добиться этого в Swift.
Есть старый код Objective-C, который использует:
CURRENT_DATA_KEY key = NULL;
initWithKey(key)
Я пытался:
let myKey = UnsafeMutablePointer<CURRENT_DATA_KEY>.allocate(capacity: 1)
Но когда я пытаюсь использовать его позже в качестве аргумента в функции, я получаю сообщение об ошибке:
Cannot convert value of type 'UnsafeMutablePointer<_DATA_KEY_>' (aka 'UnsafeMutablePointer(<OpaquePointer>)') to expected argument type 'UnsafeMutablePointer(<_DATA_KEY_?>!)'
Что похоже на то, что функция ожидает необязательное значение?
Я также пробовал:
let myKey: CURRENT_DATA_KEY? = nil
let myKey: CURRENT_DATA_KEY = NSNull()
Но они получают ошибки аналогичного типа.
Как создать: UnsafeMutablePointer(<_DATA_KEY_?>!)
var myKey: CURRENT_DATA_KEY = nil
работает? - person Charles Srstka   schedule 30.08.2017