我試圖使用沒有文檔的peertalk框架。 在他們的obj-c示例中,他們使用INADDR_LOOPBACK宏,並且示例正在運行。 但是,當我嘗試在swift中執行相同的操作時,系統會拋出未解決的標識符錯誤。 任何人都知道如何解決它?來自<netinet/in.h>的INADDR_LOOPBACK宏未在swift中導入
http://www.gnu.org/software/libc/manual/html_node/Host-Address-Data-Type.html
我試圖使用沒有文檔的peertalk框架。 在他們的obj-c示例中,他們使用INADDR_LOOPBACK宏,並且示例正在運行。 但是,當我嘗試在swift中執行相同的操作時,系統會拋出未解決的標識符錯誤。 任何人都知道如何解決它?來自<netinet/in.h>的INADDR_LOOPBACK宏未在swift中導入
http://www.gnu.org/software/libc/manual/html_node/Host-Address-Data-Type.html
更新:作爲夫特3,INADDR_LOOPBACK
的導入到夫特。因此,它足以
#include <netinet/in.h>
添加到橋接頭文件,而是一個自定義的定義不再需要 。
老答案:出於某種原因,宏定義
#define INADDR_LOOPBACK (u_int32_t)0x7f000001
從<netinet/in.h>
是不導入斯威夫特。 問題可能是(u_int32_t)
投,因爲其他 宏象
#define INADDR_NONE 0xffffffff /* -1 return */
被進口。
一種解決方法是在你的斯威夫特代碼來定義
let INADDR_LOOPBACK = UInt32(0x7f000001)
。 或者,添加
#include <netinet/in.h>
const uint32_t kInAddrLoopback = INADDR_LOOPBACK;
到橋接報頭文件,並在銀行代碼使用kInAddrLoopback
。 這不太容易出錯,因爲您不必重複常量。
釘着它,謝謝 –
@ thibautnoah:不客氣! (我已經添加了另一個可能的解決方案:) –
欣賞它,確實這樣更有效率 –
從Apple文檔。
聲明簡單的宏作爲全局常量,並將複雜的宏 轉換爲函數。對於夫特3
我不認爲你明白我的問題 –
我會查看你必須擁有的源代碼,看看這個宏是幹什麼的,然後把它翻譯成合適的Swift代碼。該文件說明它代表127.0.0.1。將C轉換成Swift很有趣。 Swift 2似乎稍微簡單一些。 – gnasher729
就是這樣,源代碼中沒有任何暗示宏已經存在於obj-c 中看到了宏是假設的,但無法將它放入框架接受的變量中。 –