我正在使用Swift中的外部C庫for OS X.我得到一個值cda,它在C中定義爲double*
(它是一個雙數組的指針)。無法將類型'UnsafePointer <Double>'的值轉換爲期望的參數類型'UnsafePointer <_>'
當導入到Swift中時,它將類型識別爲UnsafeMutablePointer。我試圖將此指針和計數轉換爲雙數組。下面是我使用的代碼(假設arrlen是數組的正確的計數):
let doublearrptr = UnsafePointer<Double>(cda)
let xptarr = UnsafeBufferPointer<Double>(start: doublearrptr, count:arrlen)
然而,編譯這段代碼的時候,我得到的錯誤:
Cannot convert value of type 'UnsafePointer<Double>' to expected argument type 'UnsafePointer<_>'
我Swift相對較新,但我相當肯定我無法轉換爲UnsafePointer<_>
。我試圖轉換爲UnsafePointer<Void>
,但得到了相同的錯誤。 Swift確認cda
是UnsafeMutablePointer<Double>
。
當你說「它認爲類型爲UnsafeMutablePointer」,你的意思是它認爲它是一個'UnsafeMutablePointer'? –
paulvs
是的,對不起。它承認雙倍。 – Laxsnor
你能隔離和發佈不依賴於庫的代碼嗎? (例如聲明一個C double數組,並試圖將其轉換爲Swift'Array')並顯示哪一行產生錯誤?你發佈的代碼似乎沒問題。 –
paulvs