私はCライブラリにアクセスするSwiftアプリケーションに取り組んでいます。CからSwiftへのtypedef構造体
typedef struct _DATA_KEY_ * CURRENT_DATA_KEY;
そして、そこ他のクラスのメソッド::
-(int) initWithKey(CURRENT_DATA_KEY * key);
私は私のコードでCURRENT_DATA_KEYを作成する必要が
.hファイルには、typedefは構造体が含まれています。私がスイフトでそれをどのように達成できるかはわかりません。
使用していますいくつかの古いObjective-Cのコードがあります:
CURRENT_DATA_KEY key = NULL;
initWithKey(key)
私が試した
:
let myKey = UnsafeMutablePointer<CURRENT_DATA_KEY>.allocate(capacity: 1)
をしかし、私は関数内の引数として後でそれを使用しようとすると、Iエラーが発生する:
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()
しかし、これらは、同様のタイプのエラーが発生します。
はどのようにして作成するのです。だからもし
-(int) initWithKey(struct _DATA_KEY_ ** key);
:
typedef struct _DATA_KEY_ * CURRENT_DATA_KEY;
-(int) initWithKey(CURRENT_DATA_KEY * key);
に実際に等価です。私はこれをやったが、IIRCが、これは以来UnsafeMutablePointer(<_DATA_KEY_?>!)
'var myKey:CURRENT_DATA_KEY = nil'は機能しますか? –
いいえ動作しません。 –