gpt4 book ai didi

ios - 在 "class func"方法中获取 Swift 类名

转载 作者:IT王子 更新时间:2023-10-29 05:14:13 27 4
gpt4 key购买 nike

我在 Swift 中有一个静态方法

class BaseAsyncTask: WebServiceClient {
class func execute(content : [String:AnyObject], cancelled:CustomBool)
{
// Print class name (BaseAsyncTask) here
}
}

我想知道如何在该方法中获取类名。我试过了

self.dynamicType

但这会产生错误(我想是因为类函数中的 self)

最佳答案

有不同的方法可以做到这一点,如果你的方法继承自 NSObject,你可以将它暴露给 objective-c 并做类似的事情。

@objc(BaseAsyncTask)

class BaseAsyncTask: WebServiceClient {
class func execute(content : [String:AnyObject], cancelled:CustomBool)
{
println("Class \(NSStringFromClass(self))")
}
}

对于纯粹的 SWIFT 自省(introspection)检查这里关于 MirrorType

我还发现此扩展归功于 ImpactZero

public extension NSObject{
public class var nameOfClass: String{
return NSStringFromClass(self).components(separatedBy: ".").last!
}

public var nameOfClass: String{
return NSStringFromClass(type(of: self)).components(separatedBy: ".").last!
}
}

[Xcode 8]
Alex 建议我在 Xcode 8 版本中此代码显示警告。为了避免这种情况,我们应该像这样给方法加上前缀:

@nonobjc class var className: String{ 
return NSStringFromClass(self).components(separatedBy: ".").last!
}

关于ios - 在 "class func"方法中获取 Swift 类名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31799624/

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