当前无线接入技术&x27;已弃用:首次在iOS 12.0中弃用

当前无线接入技术&x27;已弃用:首次在iOS 12.0中弃用,ios,objective-c,xcode,core-telephony,Ios,Objective C,Xcode,Core Telephony,我是Objective-C的新手。我对以下代码有问题。它显示“currentRadioAccessTechnology”已弃用:首先在iOS 12.0中弃用,如果我替换代码,则将“currentRadioAccessTechnology”替换为“serviceCurrentRadioAccessTechnology”。它给出了以下错误:“NSDictionary”没有可见的@interface声明选择器“isEqualToString:” - (NSString*)w3cConnectionTy

我是Objective-C的新手。我对以下代码有问题。它显示“currentRadioAccessTechnology”已弃用:首先在iOS 12.0中弃用,如果我替换代码,则将“currentRadioAccessTechnology”替换为“serviceCurrentRadioAccessTechnology”。它给出了以下错误:“NSDictionary”没有可见的@interface声明选择器“isEqualToString:”

- (NSString*)w3cConnectionTypeFor:(CDVReachability*)reachability
{
    NetworkStatus networkStatus = [reachability currentReachabilityStatus];

    switch (networkStatus) {
        case NotReachable:
            return @"none";

        case ReachableViaWWAN:
        {
            BOOL isConnectionRequired = [reachability connectionRequired];
            if (isConnectionRequired) {
                return @"none";
            } else {
                if ([[[UIDevice currentDevice] systemVersion] compare:@"7.0" options:NSNumericSearch] != NSOrderedAscending) {
                    CTTelephonyNetworkInfo *telephonyInfo = [CTTelephonyNetworkInfo new];
                    if ([telephonyInfo.serviceCurrentRadioAccessTechnology  isEqualToString:CTRadioAccessTechnologyGPRS]) {
                        return @"2g";
                    } else if ([telephonyInfo.currentRadioAccessTechnology  isEqualToString:CTRadioAccessTechnologyEdge]) {
                        return @"2g";
                    } else if ([telephonyInfo.currentRadioAccessTechnology  isEqualToString:CTRadioAccessTechnologyWCDMA]) {
                        return @"3g";
                    } else if ([telephonyInfo.currentRadioAccessTechnology  isEqualToString:CTRadioAccessTechnologyHSDPA]) {
                        return @"3g";
                    } else if ([telephonyInfo.currentRadioAccessTechnology  isEqualToString:CTRadioAccessTechnologyHSUPA]) {
                        return @"3g";
                    } else if ([telephonyInfo.currentRadioAccessTechnology  isEqualToString:CTRadioAccessTechnologyCDMA1x]) {
                        return @"3g";
                    } else if ([telephonyInfo.currentRadioAccessTechnology  isEqualToString:CTRadioAccessTechnologyCDMAEVDORev0]) {
                        return @"3g";
                    } else if ([telephonyInfo.currentRadioAccessTechnology  isEqualToString:CTRadioAccessTechnologyCDMAEVDORevA]) {
                        return @"3g";
                    } else if ([telephonyInfo.currentRadioAccessTechnology  isEqualToString:CTRadioAccessTechnologyCDMAEVDORevB]) {
                        return @"3g";
                    } else if ([telephonyInfo.currentRadioAccessTechnology  isEqualToString:CTRadioAccessTechnologyeHRPD]) {
                        return @"3g";
                    } else if ([telephonyInfo.currentRadioAccessTechnology  isEqualToString:CTRadioAccessTechnologyLTE]) {
                        return @"4g";
                    }
                }
                return @"cellular";
            }
        }
        case ReachableViaWiFi:
        {
            BOOL isConnectionRequired = [reachability connectionRequired];
            if (isConnectionRequired) {
                return @"none";
            } else {
                return @"wifi";
            }
        }
        default:
            return @"unknown";
    }
}

serviceCurrentRadioAccessTechnology
是一个字典,而不是字符串,因为设备可能有两个SIM,因此有多个载波。您需要从每个字典条目中获取值。检索字典键并使用它访问服务类型。无论如何,你的应用程序都不应该根据连接类型做出决定。网络框架可以告诉您是否在低数据网络上,您可以据此做出决定。
serviceCurrentRadioAccessTechnology
是一个字典,而不是字符串,因为设备可能有双SIM,因此有多个载波。您需要从每个字典条目中获取值。检索字典键并使用它访问服务类型。无论如何,你的应用程序都不应该根据连接类型做出决定。网络框架可以告诉您是否在低数据网络上,您可以据此做出决策。