Ios 添加分析事件以记录每个ViewController';项目中有谁的名字
我有一个项目,每当任何视图控制器(记录视图控制器的名称)出现在屏幕上时,我都需要记录分析事件 我试图避免在调用analytics SDK时将所有现有的视图控制器类都弄乱 我尝试创建一个AnalyticsViewController,我的所有视图控制器都将子类化此视图控制器,然后我在AnalyticsViewController类的viewDidLoad方法中添加analytics事件。但这种方法的问题在于AnalyticsViewController不知道调用来自哪个子视图控制器 我正在使用Swift 3.0。我相信Swift以其强大的语言特性应该能够为我提供某种抽象Ios 添加分析事件以记录每个ViewController';项目中有谁的名字,ios,swift,design-patterns,Ios,Swift,Design Patterns,我有一个项目,每当任何视图控制器(记录视图控制器的名称)出现在屏幕上时,我都需要记录分析事件 我试图避免在调用analytics SDK时将所有现有的视图控制器类都弄乱 我尝试创建一个AnalyticsViewController,我的所有视图控制器都将子类化此视图控制器,然后我在AnalyticsViewController类的viewDidLoad方法中添加analytics事件。但这种方法的问题在于AnalyticsViewController不知道调用来自哪个子视图控制器 我正在使用Sw
有没有办法在不乱扔所有视图控制器的情况下解决此问题?您的思路是正确的。制作UIViewController父类是一个好主意 在viewDidLoad方法中,您可以添加以下内容:
let className = NSStringFromClass(self.classForCoder)
它将为您提供当前加载的视图控制器的名称,然后您可以在事件中使用该名称来指定实际加载的视图控制器
编辑:添加了示例。
因此,您父母的viewDidLoad将如下所示:
override func viewDidLoad() {
super.viewDidLoad()
let className = NSStringFromClass(self.classForCoder)
sendEvent(withViewControllerName: className)
}
你在正确的轨道上。制作UIViewController父类是一个好主意 在viewDidLoad方法中,您可以添加以下内容:
let className = NSStringFromClass(self.classForCoder)
它将为您提供当前加载的视图控制器的名称,然后您可以在事件中使用该名称来指定实际加载的视图控制器
编辑:添加了示例。
因此,您父母的viewDidLoad将如下所示:
override func viewDidLoad() {
super.viewDidLoad()
let className = NSStringFromClass(self.classForCoder)
sendEvent(withViewControllerName: className)
}
@JPetric给出的答案是一个惊人的起点。我只是做了一点修改,让它工作 我把它放在我的AnalyticsViewController中,以检索当前子类的名称
private func currentClassName() -> String? {
return NSStringFromClass(self.classForCoder).components(separatedBy: ".").last
}
@JPetric给出的答案是一个惊人的起点。我只是做了一点修改,让它工作 我把它放在我的AnalyticsViewController中,以检索当前子类的名称
private func currentClassName() -> String? {
return NSStringFromClass(self.classForCoder).components(separatedBy: ".").last
}