Миграция BindMemory Swfit 3

#ios #swift #swift3 #nsdata

#iOS #swift #swift3 #nsdata

Вопрос:

Как перенести этот код в Swift 3?

 let keyBytes = keyData.bytes.bindMemory(to: Void.self, capacity: keyData.count)
  

Я получаю сообщение об ошибке ниже

‘bytes’ недоступен: вместо этого используйте withUnsafeBytes

Комментарии:

1. Для чего вам нужен указатель? Было бы полезно немного больше контекста.

Ответ №1:

keyData это тип Data объекта, который не имеет свойства bytes , преобразуйте keyData в NSData , а затем получите доступ bytes .

 let keyBytes = NSData(data: keyData).bytes.bindMemory(to: Void.self, capacity: keyData.count)
  

Комментарии:

1. Боже, большое тебе спасибо. Может быть, вы знаете, как это исправить: let cipherText = UnsafeMutablePointer<UInt8>(cipherData.mutableBytes) . Ошибка не удается вызвать инициализатор для типа unsafemutablepointer<Int8> со списком аргументов типа (UnsafeMutableRawPointer)

2. @Илья Добро пожаловать, приятель, ошибка говорит о том, что нет метода инициализации UnsafeMutablePointer , который принимает UnsafeMutableRawPointer в качестве аргумента. Возможно, вам нужно задать еще один вопрос по SO. Не знаю, как это решить.