Sto lavorando con API di terze parti c Sto cercando di chiamare una delle funzioni con una stringa semplice. Qualcosa di simile a questo:Converti stringa in UnsafeMutablePointer <char_t> in Swift
some_c_func("aString");
ottengo un errore di generazione:
Type 'UnsafeMutablePointer<char_t>' does not conform to protocol 'StringLiteralConvertible'
Ho visto alcuni suggerimenti per utilizzare utf8 su stringa o conversioni simili, che ottiene quasi arrivati, ma con il seguente errore:
some_c_func("aString".cStringUsingEncoding(NSUTF8StringEncoding));
'UnsafePointer<Int8>' is not convertible to 'UnsafeMutablePointer<char_t>'
Come posso creare un UnsafeMutablePointer?
Funziona, grazie! Ma non lo fa (non è più?) Richiede lo srotolamento opzionale. La firma su cStringUsingEncoding è 'func cStringUsingEncoding (encoding: UInt) -> UnsafePointer' e strdup la converte in UnsafeMutablePointer. –
brodney
@brodney heh, sto usando gli strumenti Xcode 6.1.1 (6A2008a): la firma è 'func cStringUsingEncoding (encoding: NSStringEncoding) -> [CChar]?' Quale downgrade a 'UnsafePointer?' –
Usando strdup, si devi liberare il buffer. defer {free (cString)} –