Swift 3 Update: Enter "Dictionary <NSObject, AnyObject>?" has no subscribers
I recently upgraded my application from Swift 2.3 to Swift 3.0, and when I did this, I got the following error:
Type 'Dictionary<NSObject, AnyObject>?' has no subscript members
The function in which it is displayed is as follows:
class func getSSIDConnectionName() -> String? {
var currentSSID: String?
let interfaces = CNCopySupportedInterfaces()
if interfaces == nil {
print("Got nil up here")
return nil
}
let interfaces2:CFArray! = interfaces
for i in 0..<CFArrayGetCount(interfaces2) {
let interfaceName: UnsafeRawPointer = CFArrayGetValueAtIndex(interfaces2, i)
let rec = unsafeBitCast(interfaceName, to: AnyObject.self)
let unsafeInterfaceData = CNCopyCurrentNetworkInfo("\(rec)" as CFString)
if unsafeInterfaceData != nil {
let interfaceData = unsafeInterfaceData! as Dictionary!
currentSSID = interfaceData["SSID"] as? String
} else {
print("Got nil down here")
return nil
}
}
return currentSSID
}
I get an error in the string "current SSID =". This code worked great in Swift 2.3, and, unfortunately, I'm not very versed in things labeled as “unsafe”, so if the answer goes into these regions, it would be very useful if you could explain it as simply as possible.
Thanks for reading!
+4
3 answers
, @matt, ,
, CNCopySupportedInterfaces() Swift [String]
if let nil
:
func getSSIDConnectionName() -> String? {
guard let interfaces = CNCopySupportedInterfaces() as? [String] else {
return nil
}
for ifname in interfaces {
if let interfaceData = CNCopyCurrentNetworkInfo(ifname as CFString) as? [String: Any],
let currentSSID = interfaceData["SSID"] as? String {
return currentSSID
}
}
return nil
}
+4