में प्रारंभकर्ता मेरे पास एक रसीद सत्यापन कक्षा है जिसे स्विफ्ट 3 जारी होने के बाद बहिष्कृत किया गया है। मैं कुछ समस्याओं का हल नहीं है, लेकिन मैं अभी भी कई ...UnsafePointer <UInt8> स्विफ्ट 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
,210दूसरा त्रुटि
while (ptr < end)
द्विआधारी ऑपरेटरों < दो UnsafePointer (UInt8) ऑपरेंड
के लिए लागू नहीं किया जा सकता धन्यवाद पहले से बहुत ज्यादा:)
संपादित
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)
ठीक है, धन्यवाद, यह मदद की :)! मैं अपना नया कोड जोड़ने के लिए अपना प्रश्न संपादित करता हूं क्योंकि यह थोड़ा और जटिल है – GrayFox
@ ग्रेफॉक्स समस्या क्या है? – LinShiwei
data.bytes.assumingMemoryBound (करने के लिए: UInt8.self) काम नहीं करता है क्योंकि 'बाइट्स' एक कंपाइलर त्रुटि फेंकता है: "बाइट्स के बजाय असुरक्षित बाइट्स का उपयोग करने की आवश्यकता है"। मैंने पूरे ब्लॉक को ईडीआईटी अनुभाग में जोड़ा;)। अब, यह काम करता है लेकिन मेरे पास डिवाइस में अन्य नई त्रुटियां हैं IidentifierForVendor.getBytes (UnsafeMutablePointer (mutableData !.mutableBytes)) जो है: "UnsafeMutablePoinPointer के प्रकार की तर्क सूची के साथ UnsafeMutablePointer प्रकार का उपयोग नहीं कर सकता" .... – GrayFox