我有一个类,它获取用户当前位置,然后GEOCODE到一个正确的位置。然后我想将更改发送到视图控制器。我希望能够获得observeValueForKeyPath函数的地理位置。然后我想把这个函数放在ViewController中,所以当它改变时我想要一个标签来改变。
int? i = 1;
int j = (i ?? 2) + 1; //If I is null make j = 2 else make j = to 0 and then add 1
答案 0 :(得分:0)
首先,在属性所在的任何类中将LocationString
声明为动态。这将为该属性启用KVO。
dynamic var LocationString: String = ""
在视图控制器的viewDidLoad()
中设置KVO。请记住在代码中的某处删除KVO。由于LocationString
是另一个类的属性,因此获取对该类的引用。您可以在viewDidLoad()
中初始化对象,或者将其设为单例并以此方式获取实例。我将使用单例实例,我将为此段代码调用Location
。
override func viewDidLoad() {
super.viewDidLoad()
let location = Location.sharedInstance()
location.addObserver(self, forKeyPath: "LocationString", options: .allZeros, context: nil)
}
现在,在您的视图控制器中,observerValueForKeyPath(...)
单身人士会随时更改LocationString
来调用Location
。
override func observeValueForKeyPath(keyPath: String, ofObject object: AnyObject, change: [NSObject : AnyObject], context: UnsafeMutablePointer<Void>) {
let location = Location.sharedInstance()
self.label.text = location.LocationString
}