A mają strukturę tak (określone w bson.h z MongoDB c sterownika)uzyskać wskaźnik do tablicy C char Swift
typedef struct
{
uint32_t domain;
uint32_t code;
char message[504];
} bson_error_t;
Swift, że posiada wskaźnik do tej struktury, jak poniżej:
err: UnsafePointer<bson_error_t> = ...
teraz cokolwiek robię, nie można przekonwertować message[504]
(który Swift widzi jako krotki (int8, int8, int8 ... 504 razy)) w celu char*
go używać w String.fromCString(). Czy to możliwe w Swift? Jako rozwiązanie tymczasowe utworzyłem pomocniczą funkcję C w oddzielnym pliku .c
, który pobiera err *bson_error_t
i zwraca char*
, ale to jest dziwne, jeśli Swift nie może zrobić tego samodzielnie.
mam wrażenie łączą tablice z gigantycznymi friggin-krotkami, ponieważ dostęp ma znaczenie znacznie więcej niż kopiowanie tego materiału jako jednej ciągłej tablicy. Każdy sposób, w jaki go przycinasz, wymaga powtórzenia tego i przekazania go do prawidłowej pamięci, więc funkcja C, tak jak lub nie, jest najlepsza. – CodaFi
No cóż, nie widzę żadnego punktu w konwersji tablicy char C (lub jakiejkolwiek tablicy C) na krotkę ze względu na dostępność. Tablice są tablicami, a krotki krotkami. Nie pamiętam przypadku, w którym użyłem tablicy do uzyskiwania dostępu do elementów z twardymi indeksami. W tym celu istnieją krotki i struktury, a nie tablice. – Uniqus