【问题标题】:Cocoa SCNetworkInterface getting media sub typesCocoa SCNetworkInterface 获取媒体子类型
【发布时间】:2016-03-01 19:02:31
【问题描述】:

我正在用 Swift 编写一个 Cocoa 应用程序,它确定可用的网络接口(wifi、以太网等),我想提取子类型选项。

例如,我有一个 Thunderbolt 以太网连接,在我 Mac 的“硬件”选项卡的“网络偏好设置”中,我可以将速度切换为 10baseT/UDP、100baseTX 等。

Apple 文档说我可以使用SCNetworkInterfaceCopyMediaSubTypes 来获取可用媒体子类型的数组(10BaseT/UTP、100baseTX 等),我需要做的就是给它一个 CFArray 参数,

可用
SCNetworkInterfaceCopyMediaOptions 函数返回的可用选项。

但是,文档指定 SCNetworkInterfaceCopyMediaOptions 返回 Bool,

如果请求的信息已返回则为 TRUE

我正在尝试使用通过 SCNetworkInterfaceCopyAll() 检索到的接口的 CFArray,但 SCNetworkInterfaceCopyMediaOptions(interfaces) 返回 nil。

let interfaces = SCNetworkInterfaceCopyAll()
print(SCNetworkInterfaceCopyMediaSubTypes(interfaces))

>> nil

这是我可以在网络偏好设置中查看的屏幕截图

我怎样才能得到这个列表。我使用了错误的 CFArray 吗?由于建议的 SCNetworkInterfaceCopyMediaOptions 返回一个布尔值,我无法确定我还能传递什么。

【问题讨论】:

    标签: swift macos cocoa networking osx-yosemite


    【解决方案1】:

    SCNetworkInterfaceCopyMediaOptions 返回一个布尔值:

    如果请求的信息已返回,则为 TRUE。

    SCNetworkInterfaceCopyMediaOptions 在参数available 中返回一个表示可能的媒体选项(子类型、选项)的数组。

    【讨论】:

      【解决方案2】:

      这可能会有所帮助

          CFArrayRef availableArr;
          CFDictionaryRef currentDict;
          CFDictionaryRef activeDict;
          BOOL one = SCNetworkInterfaceCopyMediaOptions(interface ,&currentDict, &activeDict, &availableArr, NO);
          NSLog(@"availableArr : %@",availableArr);
          NSLog(@"currentDict : %@",currentDict);
          NSLog(@"activeDict : %@",activeDict);
      
      
          CFArrayRef MediaSubTypes = SCNetworkInterfaceCopyMediaSubTypes(availableArr);
          NSLog(@"MediaSubTypes : %@",MediaSubTypes);
      
          NSString *subType = @"autoselect";
          CFArrayRef MediaSubTypeOptions = SCNetworkInterfaceCopyMediaSubTypeOptions(availableArr,(__bridge CFStringRef)subType);
          NSLog(@"MediaSubTypeOptions : %@",MediaSubTypeOptions);
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-08-11
        • 2015-08-31
        • 1970-01-01
        • 1970-01-01
        • 2011-08-14
        • 2010-09-24
        • 1970-01-01
        相关资源
        最近更新 更多