Ich habe Probleme eine Reihe von Swift-Strings in einem Array für AC-Funktion mit der Signatur umzuwandeln:Array of Swift-Strings in const char * const *
PGconn *PQconnectStartParams(const char * const *keywords, const char * const *values, int expand_dbname)
In Swift, die const char * const * zeigt sich als:
<UnsafePointer<UnsafePointer<Int8>>
Also versuche ich, den Inhalt eines Dictionary zu konvertieren [String: String] genannt ‚Optionen‘ und Futtermittel, die an die Funktion wie folgt:
var keys = [[Int8]]()
var values = [[Int8]]()
for (key, value) in options {
var int8Array = key.cStringUsingEncoding(NSUTF8StringEncoding)!
keys.append(int8Array)
int8Array = value.cStringUsingEncoding(NSUTF8StringEncoding)!
values.append(int8Array)
}
pgConnection = PQconnectStartParams(UnsafePointer(keys), UnsafePointer(values), 0)
Es kompiliert und läuft, aber die Funktion funktioniert nicht.
Jeder Einblick würde sehr geschätzt werden.
Ok sofort: Sie sprechen eine Funktion mit dem Namen 'PQconnectdbParams()' noch Sie rufen eine Funktion namens 'PQconnectStartParams() '...? – RastaJedi
Werfen Sie einen Blick auf 'const char * const * keywords'. 'keywords' ist ein Zeiger auf einen' const' Zeiger auf ein 'const char' (das ist das gleiche wie' char const', beide bedeuten "Konstanten"). Das bedeutet, dass Sie nicht nach einer einzelnen Zeichenkette suchen ("null terminated character array"), aber Sie suchen wahrscheinlich nach einem * Array * von Zeichenketten. Irgendwie wie 'char ** argv'. Ich weiß nicht viel über Swift, aber Sie müssten herausfinden, wie man eine Swift-Zeichenkette in ein C-null-terminiertes Zeichen-Array konvertiert und dann herausfinden muss, wie man ein Array von diesen in ein C-Array von konvertieren kann Saiten, denke ich. – RastaJedi
Entschuldigung. Clerical Fehler. Guckte auf den falschen Teil der Dokumentation. Die Funktionssignatur wurde korrigiert und du hast recht, ich suche kein Null-terminiertes Array. Ich brauche und Array von Cstrings. Was ich dachte, dass ich in meinem Code erzeugte. – user5892643