gpt4 book ai didi

ios - 在 Objective-C 中的 Swift 类上调用 NSStringFromClass 返回模块错位名称

转载 作者:IT王子 更新时间:2023-10-29 05:32:26 28 4
gpt4 key购买 nike

我知道 this question关于我们如何在 Swift 中获得 objective-c 类的可读类名。

我想要实现的是从 objective-c 中获取 Swift 类的可读类名,而不用模块破坏类名。

所以如果我有一个 Swift 类:

class Foo: NSObject{}

然后在 Objective-C 中,我喜欢使用方便的 NSStringFromClass 将类名转换为字符串。

我希望 NSStringFromClass([Foo class]) 返回 @"Foo" 但它返回 @"Bar.Foo" Bar 是模块名称。

我遇到了这个 Gist但它似乎有点乱七八糟,有没有更好的方法?最好不要手动将类名键入字符串。

最佳答案

在 SWIFT 2.1 之前:

只需将 @objc(YourClassName) 放入您的 swift 类中即可:

@objc(YourClassName)

class YourClassName: NSObject {

}

你可以像这样使用 NSStringFromClass:

NSStringFromClass(YourClassName.self)

那么它也应该适用于 Objective-C。


swift 2.1

对于 Swift 2.1,对此答案的评论指出这就足够了:

class YourClassName: NSObject {

}

只需使用:

var str = String(YourClassName)

虽然我自己还没有从 Objective-C 代码中测试过这个。


有一个编辑建议希望在 Swift 4 中使用它:

var str = String(describing: YourClassName.self)

虽然我还没有从 Objective-C 测试过这个。

关于ios - 在 Objective-C 中的 Swift 类上调用 NSStringFromClass 返回模块错位名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26927050/

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