Я полный Swift новичок, но я пишу приложение для BLE с помощью swift и столкнулся с проблемой. Я работаю над каким-то открытым исходным кодом, который я нашел, чтобы понять, как структурировать приложение iOS и общаться с BLE, и когда я преобразовал его в Swift 3, возникло множество ошибок.Swift 3 Conversion, что приводит к тому, что «невозможно передать неизменяемый как inout»
Код:
func int8Value() -> Int8 {
var value: Int8 = 0
copyBytes(to: &UInt8(value), count: MemoryLayout<Int8>.size)
return value
}
Ошибка:
Cannot pass immutable value as inout argument: function call returns immutable value
Я искал в Интернете для решения этого и обнаружили следующее:
Я пытался реализовать эти, взглянуть на следующие строки кода:
if let data = characteristic.value {
var bytes = Array(repeating: 0 as UInt8,count:someData.count/MemoryLayout<UInt8>.size)
data.copyBytes(to: &bytes, count:data.count)
}
и
let data = "foo".data(using: .utf8)!
let array = [UInt8](data)
let array = data.withUnsafeBytes {
[UInt8](UnsafeBufferPointer(start: $0, count: data.count))
}
Я не очень понимаю корреляцию между ними, чем другие несколько общих переменных. Может кто-то объяснить, что происходит внутри функции CopyBytes (что делают «to» и «count»), откуда исходит ошибка, и если примеры, которые я рассматривал, имеют какое-либо отношение к методу I ' m пытается исправить?
@Martin R Я смущен, почему вы отметили мой вопрос, как дубликат, когда другой был задан месяц после того, как шахта была ....? – zmillard
Временное упорядочение дубликатов не имеет значения. Пользователи обычно выбирают вопрос с лучшими ответами как «главный» вопрос. Нет никакого штрафа за то, что ваш вопрос отмечен как дубликат, поэтому на самом деле не о чем беспокоиться. –
Ой хорошо получилось, спасибо @CodyGray – zmillard