У меня есть функция, которая возвращает определенные системные значения. Он отлично работал в Swift 2.2, и я просто обновился до Xcode 8 и Swift 3, и теперь он не работает.Преобразование NSData в NSString в Swift 3?
func ioPlatExpertDevString(_ property: String) -> String {
// Start tapping in to the IO Service
let ioPlatformExpertDevice:io_service_t? = IOServiceGetMatchingService(kIOMasterPortDefault, IOServiceMatching("IOPlatformExpertDevice"))
var sAnswer = "Not Found"
let cfAnswer:AnyObject! = IORegistryEntryCreateCFProperty(ioPlatformExpertDevice!, "\(property)" as CFString!, kCFAllocatorDefault, 0).takeRetainedValue()
if (cfAnswer != nil) {
let nsAnswer = (cfAnswer as! NSString)
sAnswer = nsAnswer.uppercased
}
// Close the IO Service
IOObjectRelease(ioPlatformExpertDevice!)
return sAnswer
}
До этого я использовал «CFData» вместо «AnyObject». Он строит хорошо, но во время выполнения, я получаю следующее сообщение об ошибке:
Could not cast value of type '__NSCFData' (0x7fff7b833ec0) to 'NSString' (0x7fff7ac32038).
Для какое свойство вы называете эту функцию? –