从<netinet / in.h>中的INADDR_LOOPBACKmacros不能在swift中导入

我正在尝试使用没有文档的peertalk框架。 在他们的obj-c示例中,他们使用INADDR_LOOPBACKmacros,并且示例正在工作。 但是当我尝试在swift中做同样的事情时,系统会抛出一个未解决的标识符错误。 任何人都知道如何解决它?

http://www.gnu.org/software/libc/manual/html_node/Host-Address-Data-Type.html

更新Swift 3:从Swift 3开始, INADDR_LOOPBACK被导入到Swift中。 所以补充就够了

 #include <netinet/in.h> 

到桥接头文件,但不再需要自定义定义。


老答案:由于某种原因,macros定义

 #define INADDR_LOOPBACK (u_int32_t)0x7f000001 

<netinet/in.h> 不会导入到Swift中。 问题可能(u_int32_t) ,因为其他macros如

 #define INADDR_NONE 0xffffffff /* -1 return */ 

import的。

一个解决scheme是定义

 let INADDR_LOOPBACK = UInt32(0x7f000001) 

在你的Swift代码中。 或者,添加

 #include <netinet/in.h> const uint32_t kInAddrLoopback = INADDR_LOOPBACK; 

到桥接头文件并在Swift代码中使用kInAddrLoopback 。 这是不太容易出错的,因为你不必重复这个常量。

从苹果文档。

将简单的macros声明为全局常量,并将复杂的macros转换为函数。