У меня возникли две серьезные проблемы при попытке обновить библиотеку, которая включает в себя экспорт файлов в Swift 3. Я прочитал apple/swift migration page, но все еще не уверен, что именно лучший способ пойти в убедитесь, что я не потерял ни одного из этих байтов. Множество примеров - это преобразование строки, но мне действительно нужны байты.Swift 3 Небезопасный указатель Неопределенный указатель и байты
Первая проблема, которая возникает у меня, заключается в каждой строке ниже, которая начинается с stream.write
, UnsafePointer<UIntX>(&var)
возвращает ошибку, указанную Ambigious use of init
.
var xbuffer = [UInt8](repeating: 0, count: 2048 + 171*1024)
let stream : OutputStream = OutputStream(toBuffer: &xbuffer, capacity: 2048 + 171*1024);
stream.open();
//Version number (2 bytes)
stream.write(Data(bytes: UnsafePointer<UInt8>(&(self.version)), count: 1).bytes.bindMemory(to: UInt8.self, capacity: Data(bytes: UnsafePointer<UInt8>(&(self.version)), count: 1).count),maxLength: 1);
stream.write(Data(bytes: UnsafePointer<UInt8>(&(self.subVersion)), count: 1).bytes.bindMemory(to: UInt8.self, capacity: Data(bytes: UnsafePointer<UInt8>(&(self.subVersion)), count: 1).count),maxLength: 1);
//Operation ID status code (2 bytes)
var opId_big = CFSwapInt16HostToBig(self.operationId);
stream.write(Data(bytes: UnsafePointer<UInt8>(&(opId_big)), count: 2).bytes.bindMemory(to: UInt8.self, capacity: Data(bytes: UnsafePointer<UInt8>(&(opId_big)), count: 2).count),maxLength: 2);
//Request ID (4 bytes)
requestId = requestId | 0x1;
var rqid_big = CFSwapInt32HostToBig(requestId);
stream.write(Data(bytes: UnsafePointer<UInt8>(&(rqid_big)), count: 4).bytes.bindMemory(to: UInt8.self, capacity: Data(bytes: UnsafePointer<UInt8>(&(rqid_big)), count: 4).count), maxLength: 4);
Я был в состоянии изменить это, выполняя изменения UnsafeRawPointer
и UnsafeBufferPointer
при создании Data
.
После этого у меня есть еще одна проблема, когда Xcode напечатает ошибку, которая bytes is unavailable use withUnsafeBytes instead
.
В целом, я могу исправить мелкие части по частям, используя такие вещи, но из-за всех цепочных команд у меня возникают проблемы с внесением нескольких изменений и попытками решений stackoverflow и быстрой миграцией из-за множества требуемых изменений по цепным командам.
Я ценю любые ответы или просвещение/направление.
Other Migration Page That Was Helpful
Я попробую сегодня. Спасибо за ответ. Я новичок в быстром и написал суть этой библиотеки в объективе-c давным-давно. Это было бы очень полезно, если оно работает! – napkinsterror