从<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转换为函数。