2017-09-01 9 views
0

SwiftGtkを使用してSwiftにGtkをバインドするのを手伝っています。 HeaderBarのためのクラスを追加しながら、しかし、私はエラーを取得する:起こっているように見える何'UnsafePointer <Int8>'にはメンバー 'toString'がありません

/home/luis/Dropbox/Documentos/Coding/Swift/SwiftGtk/.build/checkouts/SwiftGtk--2571330441700638662/Sources/HeaderBar.swift:15:63: error: value of type 'UnsafePointer<gchar>' (aka 'UnsafePointer<Int8>') has no member 'toString' 
     get { return gtk_header_bar_get_title(castedPointer())?.toString() } 
        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^ ~~~~~~~~ 
/home/luis/Dropbox/Documentos/Coding/Swift/SwiftGtk/.build/checkouts/SwiftGtk--2571330441700638662/Sources/HeaderBar.swift:20:66: error: value of type 'UnsafePointer<gchar>' (aka 'UnsafePointer<Int8>') has no member 'toString' 
     get { return gtk_header_bar_get_subtitle(castedPointer())?.toString() } 
        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^ ~~~~~~~~ 
/home/luis/Dropbox/Documentos/Coding/Swift/SwiftGtk/.build/checkouts/SwiftGtk--2571330441700638662/Sources/HeaderBar.swift:41:75: error: value of type 'UnsafePointer<gchar>' (aka 'UnsafePointer<Int8>') has no member 'toString' 
     get { return gtk_header_bar_get_decoration_layout(castedPointer())?.toString() } 

Gtk.HeaderBar get_title()メソッドがキャストされていないタイプUnsafePointerのあるgchar、(と思う)を返すということです文字列に正しくコード内:私は文字列にそれをキャストするために従うべきアプローチ

public var title: String? { 
    get { return gtk_header_bar_get_title(castedPointer())?.toString() } 
    set { gtk_header_bar_set_title(castedPointer(), newValue) } 
} 

public var subtitle: String? { 
    get { return gtk_header_bar_get_subtitle(castedPointer())?.toString() } 
    set { gtk_header_bar_set_subtitle(castedPointer(), newValue) } 
} 

答えて

1

Stringを取得する方法はさまざまです。UnsafePointer<Int8>からです。 Stringのドキュメントhttps://developer.apple.com/documentation/swift/stringをご覧ください。ここでの複雑さは、同じ文字列が、使用される符号化に応じて異なるバイト列表現を有することである。 1つの方法はinit(cString:encoding:)を使用することです。

let s = String.init(cString: buf, encoding: String.Encoding.ascii) 
:あなたはバッファが UnsafePointer<Int8>変数 bufをASCIIとしてエンコードされていることで指さことがわかっている場合たとえば、あなたはこのような文字列を得ることができます
関連する問題