Tôi đang làm việc với API của bên thứ ba c Tôi đang cố gọi một trong các hàm bằng một chuỗi đơn giản. Một cái gì đó như thế này:Chuyển đổi chuỗi thành UnsafeMutablePointer <char_t> trong Swift
some_c_func("aString");
tôi nhận được một lỗi build:
Type 'UnsafeMutablePointer<char_t>' does not conform to protocol 'StringLiteralConvertible'
Tôi đã nhìn thấy một số gợi ý để sử dụng utf8 trên String hoặc chuyển đổi tương tự, mà được gần đó, nhưng với các lỗi sau:
some_c_func("aString".cStringUsingEncoding(NSUTF8StringEncoding));
'UnsafePointer<Int8>' is not convertible to 'UnsafeMutablePointer<char_t>'
Tôi làm cách nào để tạo Con trỏ không an toàn?
Công trình này, cảm ơn! Nhưng nó không (không còn?) Yêu cầu unwrapping tùy chọn. Chữ ký trên cStringUsingEncoding là 'func cStringUsingEncoding (mã hóa: UInt) -> UnsafePointer', và strdup chỉ chuyển đổi nó thành UnsafeMutablePointer. –
brodney
@brodney heh, tôi đang sử dụng công cụ Xcode 6.1.1 (6A2008a): chữ ký là 'func cStringUsingEncoding (mã hóa: NSStringEncoding) -> [CChar]?' Để hạ cấp xuống 'UnsafePointer? ' –
Sử dụng strdup, bạn sẽ phải giải phóng bộ đệm. trì hoãn {free (cString)} –