【问题标题】:NSArray to NSMutableArray to NSStringNSArray 到 NSMutableArray 到 NSString
【发布时间】:2016-04-22 18:46:54
【问题描述】:

我正在使用 NetworkExtension 框架(我确实拥有适当的权利,并且一切正常)。 但是,我正在尝试访问这些属性,并没有通过 developer.apple.com 上的文档发现任何直接的方法。列出了属性,但无法访问它们。 1.SSID(NSString) 2. BSSID(NSString) 3. 信号强度(双倍)

在直接访问这些属性方面我没有看到任何东西,所以我决定获取一系列受支持的接口。 就我而言,我正在使用带有 NSArray 支持的接口的 Objective-C。

我获得了支持的接口数组(当前是第一个)。这是我用来获取该数组的代码。

 NSArray *networkInterfaces = [NEHotspotHelper supportedNetworkInterfaces];

我得到了这个结果(我稍微改变了结果以隐藏敏感信息:

2016-04-22 14:37:42.263 FlightPath[589:184926] (
"<CNNetwork SSID WiFiNetwork BSSID 00:a0:00:0a:00:0a [protected] [signal 0.884383] [Auto-Join] 0x12f655170>"

)

我可以记录下来,并将其设置为标签/文本视图。但是,我想使用 ObjectAtIndex 属性,这样我就可以使用 objectFromIndex 填充一个 SSID.text(标签)。

我尝试了多种方法将 NSArray 转换为 MutableArray,然后再转换为 NSString,但无处可去。有什么想法和想法吗?

【问题讨论】:

  • A NSMutableArray 只是 NSArray 的 mutable(可修改)版本。听起来您真正想做的是从数组中的一个条目中解析一个字段?
  • 相当到位。我确实使用:NSMutableArray *mutableCopy = [NSMutableArray arrayWithArray:networkInterfaces]; 将 NSArray 转换为 NSMutableArray
  • @NathanDenlinger 与您的问题没有直接关系,但为了将来参考,您还可以使用NSMutableArray *mutableCopy = [networkInterfaces mutableCopy] 创建实现NSMutableCopying 协议的任何NSObject 的可变副本。相反,您可以使用 [mutableCopy copy] 将可变副本转换回不可变副本
  • @fullofsquirrels 非常感谢!下次我一定会使用这种方法!对我可以用代码做什么有一个广泛的认识总是好的。

标签: ios objective-c nsstring


【解决方案1】:

无需创建可变数组。 [NEHotspotHelper supportedNetworkInterfaces] 返回一个 NEHotspotNetwork 对象数组。该类又具有获取SSIDBSSIDsignalStrength 的属性。

NSArray *networkInterfaces = [NEHotspotHelper supportedNetworkInterfaces];
NEHotspotNetwork *firstNetwork = [networkInterfaces firstObject];
NSString *ssid = firstNetwork.SSID;
NSString *bssid = firstNetwork.BSSID;
double signalStrength = firstNetwork.signalStrength;

【讨论】:

  • 哇,我对此感到非常愚蠢。嗯,谢谢你指出我的错误。我非常感谢您在这里输入的内容。我做得比需要的复杂得多。
猜你喜欢
  • 1970-01-01
  • 2011-09-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多