在我正在进行的将一个已发布的objective-c应用程序转换为Swift 3.1的项目中,我遇到了另一个问题。我正在使用选择器调用appdelegate中的函数,但在swift中它给了我一个错误:
使用未解析的标识符“reachabilityChanged”
函数“可改变”确实存在,但似乎SWIFT没有找到它。下面是我使用的swift和objective-c代码。swift中的reachabilityChanged函数没有给出任何错误。当然,这在objective-c中运行良好,因为我正在转换已发布的应用程序。我正在学习swift 3.1中的一些教程,所以我不确定我的语法是否正确。
//SWIFT 3.1
NotificationCenter.default.addObserver(self, selector:
#selector(reachabilityChanged), //getting 'use of unresolved identifier reachabilityChanged' for the reachabilityChanged function
name: NSNotification.Name(rawValue: kReachabilityChangedNotification),
object: nil)
func reachabilityChanged(note: NSNotification) {
//code
}
//OBJ-C
[[NSNotificationCenter defaultCenter] addObserver: self selector:
@selector(reachabilityChanged:)
name: kReachabilityChangedNotification object: nil];
- (void) reachabilityChanged: (NSNotification* )note {
//code
}
最佳答案
尝试以下操作:
NotificationCenter.default.addObserver(self, selector: #selector(self.reachabilityChanged(note:)), name: NSNotification.Name(rawValue: kReachabilityChangedNotification), object: nil)
注:
#selector(self.reachabilityChanged(note:))
-self
以及(note:)
还添加了Hedgehog先生提到的@objc。