Beim Betrieb einer C-Struktur wie der folgenden von Swift via Bridge
cstruct.h
#define MEM01_SIZE 255
struct cstruct {
char cstr01[MEM01_SIZE];
}
In swift2 wurde es mit dem folgenden Code erstellt, in swift3 war es jedoch ein Compilerfehler.
swift:swift2.2.swift
var size: Int32 = 0
var cstruct = GetCStruct(&size)
let cstr01_str = withUnsafePointer(&cstruct.memory.cstr01)
{
return String.fromCString(UnsafePointer($0))!
}
In swift3 ging ich wie folgt vor.
swift3.swift
var cstr01_str_tuple = cstruct?.pointee.cstr01
let cstr01_str = withUnsafePointer(to: &cstr01_str_tuple)
{
return String(cString: UnsafeRawPointer($0).assumingMemoryBound(to: CChar.self))
}
Ich bin mir nicht sicher, warum es funktioniert, daher kann ich noch keinen Kommentar schreiben, aber es hat vorerst funktioniert. Machen Sie sich also eine Notiz.
Recommended Posts