我是ObjectiveC和Swift的初学者(但必须为Cordova应用程序开发iOS共享扩展)。无法将目标C代码片段转换为Swift
我想在我的份额扩展
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];
}
实现这个code snippet现在我有以下的,但我真的不知道如何将“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"))
}
有人可以帮我完成这部分吗?谢谢
为什么不使用[此解决方案(http://stackoverflow.com/a/28037297/1226963)? – rmaddy
@rmaddy为什么它会更好? –
我建议它,因为它已经有工作的Swift代码。 – rmaddy