У меня есть UnsafeMutablePointer<Character>
, заполненный методом CoreFoundation.Преобразование массива символов C (небезопасный указатель) в строку
Если я NSLog его с %s
заполнителем, он выдает просто отлично.
Но если я попробую с Swift's print
, он просто пишет адрес памяти.
Пробовал почти все ... также я не понимаю, почему, если я попытаюсь получить доступ к базовому имуществу memory
, я получаю EXC_BAD_ACCESS
.
let deviceName = UnsafeMutablePointer<Character>.alloc(64)
/* other statements in which deviceName is filled */
NSLog("device %s by %s", deviceName, manufacturerName)
// Outputs correctly the string
print(String(deviceName[0]))
// Get an EXC_BAD_ACCESS error at runtime
print(String(deviceName.memory))
// Get an EXC_BAD_ACCESS error at runtime
let str = withUnsafePointer(&deviceName) { String.fromCString(UnsafePointer($0)) }
print(str)
// Outputs an empty string
print("\(deviceName) by \(manufacturerName)")
// Outputs just memory addresses
Не могли бы вы показать немного больше своего кода, пожалуйста? Что находится в этом указателе, что вы делаете, какой результат вы после, и что происходит, когда вы пытаетесь? – matt
@matt Конечно, добавлено – Teejay
Итак, могу ли я предположить, что это на самом деле строка C? – matt