Cアレイは、私は次のとおりです: '!UnsafeMutablePointer'」
ここVidyoClientInEventLogInがある私のコード
func login(portal: String, username: String, password: String) {
var loginEvent = VidyoClientInEventLogIn()
let portalCArray = UnsafeMutablePointer<Int8>(mutating: (portal as NSString).utf8String!)
withUnsafeMutablePointer(to: &loginEvent.portalUri) {
strlcpy($0, portalCArray, MemoryLayout.size(ofValue: $0))
}
}
ですタプルとしてSwiftに移植されました。しかし、 のC構造体のメモリレイアウトはSwiftに保存されているため、最初のタプル要素loginEvent.portalUri.0
(CChar
aka Int8
)のアドレス をターゲットアドレスとして使用できます。
また、あなたはUnsafePointer<CChar>
パラメータ、 表現が自動的に作成された一時的なCの文字列を取る機能 への引数として直接スウィフトString
を渡すことができます。
これはに物事を簡素化:これは動作します
func login(portal: String, username: String, password: String) {
var loginEvent = VidyoClientInEventLogIn()
strlcpy(&loginEvent.portalUri.0, portal, MemoryLayout.size(ofValue: loginEvent.portalUri))
}
!ありがとうございました – Lneuner