A具有這樣的結構(在mongodb的C驅動的bson.h定義):獲取一個指向一個C char數組中夫特
typedef struct
{
uint32_t domain;
uint32_t code;
char message[504];
} bson_error_t;
在夫特我有一個指針指向這個結構是這樣的:
err: UnsafePointer<bson_error_t> = ...
現在,無論我做什麼,我不能轉換message[504]
(斯威夫特認爲的(INT8,INT8,INT8的元組,... 504倍)),以char*
使用它在String.fromCString()。 在Swift中甚至有可能這麼做嗎?作爲臨時解決方案,我在單獨的.c
文件中創建了一個輔助函數C函數,該文件需要err *bson_error_t
並返回char*
,但是如果 Swift無法自行完成,則這很奇怪。
給我的感覺他們將數組連接到巨大的元組,因爲訪問的重要性遠遠超過將這些東西作爲一個連續數組複製出來。無論你如何切割它,你都需要遍歷它並將其編組到合適的mallocated內存中,所以C函數,不管你喜歡與否,都是你最好的選擇。 – CodaFi 2014-11-03 06:42:33
嗯,我沒有看到任何將C char數組(或任何C數組)轉換爲元組的可訪問性。數組是數組,元組是元組。當我使用數組訪問具有硬編碼索引的元素時,我不記得一個例子。爲此,元組和結構確實存在,而不是數組。 – Uniqus 2014-11-03 11:20:09