我试图使用没有文档的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 中看到了宏是假设的,但无法将它放入框架接受的变量中。 –