¿Por qué no puedo pasar una función opcional Swift String a C que permite punteros NULL?

Tengo una función C que se ocupa de las cadenas C. La función en realidad permite que las cadenas sean punteros NULL. La declaración es como sigue:

size_t embeddedSize ( const char *_Nullable string );

No es problema usar esta función como esta en C:

size_t s1 = embeddedSize("Test");
size_t s2 = embeddedSize(NULL); // s2 will be 0

Ahora estoy tratando de usarlo desde Swift. El siguiente código funciona

let s1 = embeddedSize("Test")
let s2 = embeddedSize(nil) // s2 will be 0

¡Pero lo que no funciona es pasarle una cadena opcional! Este código no compilará:

let someString: String? = "Some String"
let s2 = embeddedSize(someString)

El compilador arroja un error acerca de que el opcional no se desenvuelve y Xcode me pregunta si tal vez olvidé agregar! o?. Sin embargo, ¿por qué querría desenvolverlo?NULL onil son valores válidos para alimentar a la función. Ver arriba, acabo de pasarnil directamente y eso se compiló bien y devolvió el resultado esperado. En mi código real, la cadena se alimenta desde afuera y es opcional, no puedo forzar el desenvolvimiento, eso se romperá si la cadena fueranil. Entonces, ¿cómo puedo llamar a esa función con una cadena opcional?

Respuestas a la pregunta(3)

Su respuesta a la pregunta