【发布时间】:2015-12-08 05:04:38
【问题描述】:
我正在尝试使用此代码获取 SSID
import Foundation
import SystemConfiguration.CaptiveNetwork
public class SSID {
class func getSSID() -> String{
var currentSSID = ""
let interfaces = CNCopySupportedInterfaces()
if interfaces != nil {
let interfacesArray = interfaces.takeRetainedValue() as [String : AnyObject]
if interfacesArray.count > 0 {
let interfaceName = interfacesArray[0] as String
let unsafeInterfaceData = CNCopyCurrentNetworkInfo(interfaceName)
if unsafeInterfaceData != nil {
let interfaceData = unsafeInterfaceData.takeRetainedValue() as Dictionary!
currentSSID = interfaceData[kCNNetworkInfoKeySSID] as! String
let ssiddata = NSString(data:interfaceData[kCNNetworkInfoKeySSIDData]! as! NSData, encoding:NSUTF8StringEncoding) as! String
// ssid data from hex
print(ssiddata)
}
}
}
return currentSSID
}
}
但是在这一行出现错误
let interfacesArray = interfaces.takeRetainedValue() as [String : AnyObject]
错误是
Value of type 'CFArray?' has no member 'takeRetainedValue'
感谢您的帮助
【问题讨论】:
-
很可能,您可以删除
take(Un)RetainedValue()调用,因为该函数在 Swift 2 中不再返回非托管对象。请参阅 stackoverflow.com/questions/30740000/… 以获取类似的问答。 -
我删除了 .takeRetainedValue() 但现在我在尝试测试代码时得到一个 EXC_BREAKPOINT (EXC_ARM_BREAKPOINT, subcode=0xe7ffdefe)
-
很遗憾,我无法为您提供帮助。我没有强制网络来测试代码。
-
别担心,谢谢
-
欢迎来到 StackOverflow!我已经格式化了您的代码,使其适合普通窗口;但你可能想再给它一次通过那里很长的线路。祝你好运!