gpt4 book ai didi

ios - 复杂行警告 : AnyObject is not a subtype of NSObject

转载 作者:行者123 更新时间:2023-11-28 08:27:58 25 4
gpt4 key购买 nike

我正在尝试将以下代码转换为 Swift 3。其目的是将蜂窝信号强度打印到控制台。来自 StackOverflow 的帖子可以找到 here .

UIApplication *app = [UIApplication sharedApplication];
NSArray *subviews = [[[app valueForKey:@"statusBar"] valueForKey:@"foregroundView"] subviews];
NSString *dataNetworkItemView = nil;
for (id subview in subviews) {
if([subview isKindOfClass:[NSClassFromString(@"UIStatusBarSignalStrengthItemView") class]])
{
dataNetworkItemView = subview;
break;
}
}
int signalStrength = [[dataNetworkItemView valueForKey:@"signalStrengthRaw"] intValue];
NSLog(@"signal %d", signalStrength);

而且,在我自己的尝试(swift 对我来说是新手)、一些在线转换器和 Xcode 从 Swift 2.2 到 3 的自动转换之后,我遇到了两个问题。这是当前有问题的代码:

let app = UIApplication.shared
let subviews: NSArray = (((app.value(forKey: "statusBar"))! as AnyObject).value(forKey: "foregroundView"))!.subviews
var dataNetworkItemView: NSString?
for subview in subviews {
if (subview as AnyObject).isKind(of: NSClassFromString("UIStatusBarSignalStrengthItemView")!) {
dataNetworkItemView = subview as? String as NSString?
break
}
}
let signalStrength = Int(((dataNetworkItemView!.value(forKey: "signalStrengthRaw") as! String) as NSString ?? "0").intValue)
print("signal \(signalStrength)")

第二行(let subviews: ...)抛出错误:

“(AnyObject)”不是“NSObject”的子类型

倒数第二行 (let signalStrength = ...) 抛出以下警告:

nil 合并运算符“??”的左侧具有非可选类型“NSString”,因此从不使用右侧

第二个问题对我来说比第一个更有意义,但我该如何着手解决实际错误?我不打算使用勺子喂代码,而是试图找出错误存在的原因以及什么可以满足错误并产生所需的结果。谢谢:)

最佳答案

不知道它是否适合你。但我有同样的问题,它对我有用尝试使用 NSArray 而不是 AnyObject

let subviews: NSArray = (((app.value(forKey: "statusBar"))! as NSArray).value(forKey: "foregroundView"))!.subviews
var dataNetworkItemView: NSString?

关于ios - 复杂行警告 : AnyObject is not a subtype of NSObject,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39523987/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com