gpt4 book ai didi

ios - 从字符串数组中获取 NSClassFromString - Swift

转载 作者:行者123 更新时间:2023-11-29 02:36:50 26 4
gpt4 key购买 nike

我正在尝试编写一个函数,从我的字符串数组中加载一个特定的 View Controller >。然而,我很快就在这个概念上苦苦挣扎——我在 Objective - C 中实现了这一点。

static NSString const *const viewControllerClassName[3] = {@"one", @"two", @"three"};

.

// get the name of the class of the viewcontroller that will be shown on this page
const NSString *className = viewControllerClassName[1];
Class class = NSClassFromString((NSString *)className);

UIViewController *controller = [[class alloc] initWithContainer:self];

我如何在 Swift 中实现这个概念?由于 Class 在 Swift 中没有特色?

最佳答案

对于 NSObject 派生类(例如对于 View Controller 类),NSClassFromString() 在 Swift 中仍然有效(另请参阅 Swift language NSClassFromString 的各种答案)。

我在 type 上添加了一个条件转换确保创建的类确实是 UIViewController 的子类。因此,编译器“知道”可用的 init 方法,并且创建的实例是 UIViewController

let viewControllerClassName = [ "one", "two", "three"]

let className = viewControllerClassName[1]
if let theClass = NSClassFromString(className) as? UIViewController.Type {
let controller = theClass(nibName: nil, bundle: nil)
// ...
}

Swift 3 的更新:

if let theClass = NSClassFromString(className) as? UIViewController.Type {
let controller = theClass.init(nibName: nil, bundle: nil)
// ...
}

关于ios - 从字符串数组中获取 NSClassFromString - Swift,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26256125/

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