gpt4 book ai didi

ios - 无法将 Objective-C 片段翻译成 Swift

转载 作者:行者123 更新时间:2023-11-28 13:04:30 24 4
gpt4 key购买 nike

我是 ObjectiveC 和 Swift 的初学者(但必须为 Cordova 应用程序开发 iOS 共享扩展)。

我正在尝试实现这个 code snippet在我的分享扩展中

NSURL *destinationURL = [NSURL URLWithString:@"myapp://"];

// Get "UIApplication" class name through ASCII Character codes.
NSString *className = [[NSString alloc] initWithData:[NSData dataWithBytes:(unsigned char []){0x55, 0x49, 0x41, 0x70, 0x70, 0x6C, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6F, 0x6E} length:13] encoding:NSASCIIStringEncoding];
if (NSClassFromString(className)) {
id object = [NSClassFromString(className) performSelector:@selector(sharedApplication)];
[object performSelector:@selector(openURL:) withObject:destinationURL];
}

现在我有以下内容,但我真的不知道如何翻译“performSelector”部分,因为它似乎不在 Swift 中。

    let bytesArray : [UInt8] = [0x55, 0x49, 0x41, 0x70, 0x70, 0x6C, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6F, 0x6E]

let classNameNs = NSString.init(data: NSData(bytes: bytesArray, length: bytesArray.count), encoding: NSASCIIStringEncoding) ?? ""

let className = classNameNs as String

NSClassFromString(className).map { clazz in
let result = clazz.performSelector(Selector("sharedApplication"))
}

有人可以帮我完成这部分吗?谢谢

最佳答案

最简单的解决方案是更新到 Xcode 7 和 Swift 2.0,其中 performSelector: 确实存在。

但是,我发现在我的 Objective-C 代码几乎所有使用 performSelector: 的情况下,我在 Swift 中不需要它,因为在 Swift 中,函数是一等公民,可以作为值存储,稍后检索和调用。一般来说,performSelector: 所暗示的活力不应该使用——因为它在 Objective-C 中太频繁了——作为避免必须知道方法接收者的实际类的拐杖。

关于ios - 无法将 Objective-C 片段翻译成 Swift,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33153626/

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