В Swift есть инициализатор String, который принимает UnsafePointer<Int8>
(или UnsafePointer<CChar>
, что, я думаю, тоже самое) в качестве аргумента.
Однако не существует инициализатора, который принимает необязательный UnsafePointer
, например, указатель, который NULL
(или ноль, если говорить быстро), который может быть чрезвычайно полезен при работе с C API.
Я бы хотел расширить класс String для принятия необязательных небезопасных указателей.
Так выглядит мое расширение. Это правильно? Это как реализовать эту функцию?
extension String {
init?(cString: UnsafePointer<Int8>?) {
guard let cString = cString else { return nil }
self = String(cString: cString)
}
}