Sto lavorando con una libreria C esterna a Swift per OS X. ottengo un cda valore, che viene definito in C come double*
(è un puntatore a un doppio array).Non può convertire il valore di tipo 'UnsafePointer <Double>' al tipo di argomento previsto 'UnsafePointer <_>'
Quando si importa in Swift, riconosce il tipo come UnsafeMutablePointer. Sto cercando di convertire questo puntatore e il conteggio in un doppio array. Ecco il codice che sto usando (assumere arrlen è il corretto conteggio della matrice):
let doublearrptr = UnsafePointer<Double>(cda)
let xptarr = UnsafeBufferPointer<Double>(start: doublearrptr, count:arrlen)
Tuttavia, quando si compila questo frammento di codice, ottengo l'errore:
Cannot convert value of type 'UnsafePointer<Double>' to expected argument type 'UnsafePointer<_>'
Sono relativamente nuovo a Swift, ma sono abbastanza sicuro di non poterlo convertire in UnsafePointer<_>
. Ho provato a convertire in UnsafePointer<Void>
, ma questo ha lo stesso errore. Swift riconosce che cda
è un UnsafeMutablePointer<Double>
.
Quando si dice "riconosce il tipo come UnsafeMutablePointer", si intende che lo riconosce come 'UnsafeMutablePointer'? –
paulvs
Sì, mi dispiace. Riconosce il doppio. – Laxsnor
Puoi isolare e inviare codice che non dipende dalla libreria? (ad esempio, dichiarare un doppio array C e tentare di convertirlo in un array 'Swift') e mostrare quale riga sta producendo l'errore? Il codice che hai postato sembra OK. –
paulvs