gpt4 book ai didi

ios - NSClassFromString() 总是返回 nil

转载 作者:行者123 更新时间:2023-11-28 09:12:33 25 4
gpt4 key购买 nike

尽管 ListCell 是一个有效类,但以下代码打印出 nil

var lCellClass : AnyClass! = NSClassFromString("ListCell");

println(lCellClass);

文档说方法返回

The class object named by aClassName, or nil if no class by that name is currently loaded. If aClassName is nil, returns nil.

我还尝试获取当前 viewcontroller 的 NSClassFromString(),它已加载但仍然得到 nil

可能是什么问题?

更新:即使尝试这样做 NSClassFromString("Array") 我仍然得到 nil

最佳答案

NSClassFromString 函数确实适用于(纯和 Objective-C 派生的)swift 类,但前提是您使用完全限定名称。

例如,在一个名为 MyApp 的模块中有一个名为 Person 的纯 swift 类:

let personClass: AnyClass? = NSClassFromString("MyApp.Person")

模块名称由“产品模块名称”(PRODUCT_MODULE_NAME) build设置定义,通常与您的目标名称相同(应用了一些规范化,例如删除空格)。

这是非典型的,但是如果你正在加载的类在当前模块中并且你在编译时不知道模块名称,例如因为代码是作为多个目标的一部分编译的,所以您可以动态查找包名称,通常对应于模块名称:

let moduleName = Bundle.main.infoDictionary!["CFBundleName"] as! String
let personClass: AnyClass? = NSClassFromString(moduleName + "." + "Person")

但是我不推荐这样做,除非你在编译时真的不知道。

请参阅 Using Swift With Cocoa and Objective-C 中的在 Objective-C API 中使用 Swift 类名获取更多信息。

关于ios - NSClassFromString() 总是返回 nil,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28786321/

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