Umwandlung einer C-char-array zu einem String

Ich habe einen Swift-Programm, das interop mit einer C Bibliothek. Diese C-Bibliothek gibt eine Struktur mit einem char[] array-innen, wie diese:

struct record
{
    char name[8];
};

Die definition ist korrekt importiert Swift. Aber das Feld wird interpretiert als ein Tupel von 8 Int8 Elemente (typisierte (Int8, Int8, Int8, Int8, Int8, Int8, Int8, Int8)), die ich habe keine Ahnung, wie das zu verwandeln in eine String mit Swift.

Gibt es keine String Initialisierung nimmt eine Int8 Tupel, und es scheint nicht möglich, einen Zeiger auf das erste element des Tupels (da können Typen heterogenen, das ist nicht wirklich verwunderlich).

Jetzt meine beste Idee ist, erstellen Sie ein kleines C-Funktion akzeptiert einen Zeiger auf die Struktur selbst und zurück name als char* pointer statt einem array, und gehen Sie mit.

Gibt es, allerdings sind Reine Swift Weg, es zu tun?

Sind Sie sicher, dass interop macht es eine C-Frage? Oder, dass dein workaround funktioniert also? Vor allem, wie Sie wollen, eine Reine-swift-Lösung...
wenn ich war auf der Suche für how to convert a C char-array, um einen Swift string, schaute ich mich nach tags "c" und "swift" für sicher.
Es gibt nichts C über das byte-array, aber Sie haben eine Beschreibung, die es gilt in C, C++, objective-C, objective-C++ und so weiter. Macht es nicht zu einem C-Frage.
Ich kenne niemand, der bezieht sich auf diese als "C++ - arrays" oder "Objective-C-arrays" oder "Objective-C++ - arrays", und ich kenne keine andere definition von "C-Arrays". Wenn ich eine Lösung gesucht, die ich verwendet, "C-Arrays" in meine Suchbegriffe, und es sei denn, ich bin ein Ausreißer, ich glaube die nächste person mit dem gleichen problem wird das gleiche tun. Ich denke, dass die tags sind das wichtigste für die Suchanfragen, und dass Ihre Kategorisierung Zweck kommt an zweiter Stelle.
Wenn etwas oft beschrieben mit C als synonym für low-level und native markiert C, würde der Sumpf der C-tag mit nur über alles, was mit native interop. Sehr schlechte Idee.

InformationsquelleAutor zneak | 2014-12-13

Schreibe einen Kommentar