Ios Swift:如何使用链接库中的Objective-C函数?

Ios Swift:如何使用链接库中的Objective-C函数?,ios,objective-c,swift,Ios,Objective C,Swift,背景 为了学习,我对iOS开发和Swift是新手。作为一个小挑战,我正在尝试获取设备当前连接到的网络的SSID 这是使用Objective-C:在堆栈上很好地覆盖的地面,例如。。。但是Objective-C/Swift舞蹈给我带来了一些概念上的挑战 具体地说,建议的解决方案(在上面的链接帖子中讨论)是调用函数CNCopyCurrentNetworkInfo()——但根据,该函数在Swift中不可用 到目前为止 我已经将SystemConfiguration.framework添加到项目的链接框架

背景

为了学习,我对iOS开发和Swift是新手。作为一个小挑战,我正在尝试获取设备当前连接到的网络的SSID

这是使用Objective-C:在堆栈上很好地覆盖的地面,例如。。。但是Objective-C/Swift舞蹈给我带来了一些概念上的挑战

具体地说,建议的解决方案(在上面的链接帖子中讨论)是调用函数
CNCopyCurrentNetworkInfo()
——但根据,该函数在Swift中不可用

到目前为止

我已经将
SystemConfiguration.framework
添加到项目的链接框架和库中(我想是正确的)。我还使用
importsystemconfiguration
将其引入视图控制器

问题

  • 我是否还需要使用
    导入系统配置
  • 是否有其他/更好的方法包含
    SystemConfiguration

  • 大函数:导入所需库后,如何从库中调用Objective-C函数


  • 谢谢大家!

    苹果的互操作性手册(摘自):

    任何可以作为模块访问的Objective-C框架(或C库) 可以直接导入Swift。这包括所有 Objy-C系统框架,如基金会、UIKIT和 SpriteKit以及随系统提供的通用C库

    关于你的具体问题:

  • 情况正好相反:您不需要手动包含Apple的框架。Xcode将自动为您提供有效的
    import
    语句(例如在您的情况下
    import SystemConfiguration
    ),甚至——或者更确切地说:特别是——在操场上

  • 同上

  • 根据上面的导入语句,
    SystemConfiguration
    确实是导入的,因为您可以调用它的函数(例如
    SCCopyLastError()//-->uu\NSCFError
    )并访问它的常量(例如
    kCFErrorDomainSystemConfiguration/-->com.apple.SystemConfiguration
    )。不幸的是,
    CaptiveNetwork
    似乎没有随它一起导入(例如,
    CNCopySupportedInterfaces()/-->使用未解析的标识符


  • 但是,您应该能够在Objective C端使用此框架,并且只需从Swift调用您自己的包装器函数。您只需要记住将它们包含在桥接头中列出的导入中(有关桥接头的更多信息,请参阅)。

    我知道这并不是直接回答您的问题,而是对您问题的回答。 在你的情况下,你可以用swift做任何事情

    导入库之后

    导入系统配置。CaptiveNet工作

    你可以立即致电:

    CNCopySupportedInterfaces()

    它会起作用的。
    在Xcode 6.3.2中确认。

    唯一的问题是,当我键入“CN”并按Ctrl+Space时,autocomplete仍然不会显示任何内容。不要被这句话蒙蔽了——完整的“CNCopySupportedInterfaces”一词就行了!你知道谁拥有这个东西吗?根据仅涉及目标C的文档,用户有责任调用CFRelease,但是Swift中没有此功能。