A hanno una struttura come questa (definito in bson.h del conducente mongodb c):Ottenere un puntatore a una matrice C char a Swift
typedef struct
{
uint32_t domain;
uint32_t code;
char message[504];
} bson_error_t;
In Swift ho un puntatore a questa struttura come questa:
err: UnsafePointer<bson_error_t> = ...
Ora, tutto ciò che faccio non posso convertire message[504]
(che Swift vede come una tupla di (int8, int8, int8, ... 504 volte)) a char*
di utilizzarlo in String.fromCString(). È possibile farlo anche in Swift? Come soluzione temporanea, ho creato una funzione C helper in un file .c
separato che prende err *bson_error_t
e restituisce char*
, ma questo è strano se Swift non può farlo da solo.
ho la sensazione essi collegano gli array alle tuple giganti-giganti perché l'accesso conta molto più della copia di questi elementi come una matrice contigua. In qualunque modo tu lo tagli, avrai bisogno di iterare su questo e metterlo nella giusta memoria mallocated, quindi la funzione C, che ti piaccia o no, è la soluzione migliore. – CodaFi
Bene, non vedo alcun punto nel convertire un array di C char (o qualsiasi array C) in una tupla per l'accessibilità. Gli array sono array, le tuple sono tuple. Non riesco a ricordare un caso quando ho usato un array per accedere a elementi con indici hard-coded. A tale scopo esistono tuple e strutture, non array. – Uniqus