Swift 3がリリースされたため、廃止されたレシート検証クラスがあります。いくつかの問題を修正しましたが、まだ多くのものがあります...
私が使用したGitHubのソースコードは次のとおりです。 https://Gist.github.com/baileysh9/4386ea92b047d97c7285#file-parsing_productids-Swift および https://Gist.github.com/ baileysh9/eddcba49d544635b3cf5
最初のエラー:
var p = UnsafePointer<UInt8>(data.bytes)
コンパイラがスローする:UnsafePointer(UInt8)型の初期化子をUnsafeRawPointer型の引数リストで呼び出すことはできません
2番目のエラー
while (ptr < end)
二項演算子<は、2つのUnsafePointer(UInt8)オペランドに適用できません
ありがとう事前に:)
[〜#〜] edit [〜#〜]
LinShiweiの回答のおかげで、UnsafePointer宣言の解決策を見つけました。コンパイルはされますが、まだテストされていません(他のエラーによりテストが避けられるため):
func getProductIdFromReceipt(_ data:Data) -> String?
{
let tempData: NSMutableData = NSMutableData(length: 26)!
data.withUnsafeBytes {
tempData.replaceBytes(in: NSMakeRange(0, data.count), withBytes: $0)
}
var p: UnsafePointer? = tempData.bytes.assumingMemoryBound(to: UInt8.self)
Swift 3)では、UnsafePointer
を使用してUnsafeRawPointer
を初期化することはできません。
assumingMemoryBound(to:)
を使用して、UnsafeRawPointer
を_UnsafePointer<T>
_に変換できます。このような:
_var ptr = data.bytes.assumingMemoryBound(to: UInt8.self)
_
debugDescription
またはdistance(to:)
を使用して、2つのポインターを比較します。
_while(ptr.debugDescription < endPtr.debugDescription)
_
または
_while(ptr.distance(to:endPtr) > 0)
_