无法将类型 'NSNotification.Name' 的值转换为预期的参数类型 'NSKeyValueObservingOptions'
Cannot convert value of type 'NSNotification.Name' to expected argument type 'NSKeyValueObservingOptions'
在 NMAPositioningManager.h 中有这个常量:
FOUNDATION_EXPORT NSString *const NMAPositioningManagerDidUpdatePositionNotification;
我的代码在 swift
NotificationCenter.addObserver(self, forKeyPath: "positionDidUpdate", options: NSNotification.Name.NMAPositioningManagerDidUpdatePosition, context: NMAPositioningManager.shared())
灵感来自 Obj-C 中的示例:
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(positionDidUpdate)
name:NMAPositioningManagerDidUpdatePositionNotification
object:[NMAPositioningManager sharedNMAPositioningManager]];
我的字段选项有误:
NavigationViewController.swift:30:84:
Cannot convert value of type 'NSNotification.Name' to expected
argument type 'NSKeyValueObservingOptions'
我必须输入什么才能让我的 Swift 代码正常工作?
编辑:使用 NotificationCenter 而不是 Notification
您应该在 default
单例上调用 addObserver.. 方法
应该是:
NotificationCenter.default.addObserver(self, selector: #selector(positionDidUpdate), name: NSNotification.Name.NMAPositioningManagerDidUpdatePosition, object: NMAPositioningManager.shared())
更新为 SWIFT 5.4
NotificationCenter.default.addObserver(self,
selector: #selector(doThisWhenNotify),
name: NSNotification.Name("notificationKey"),
object: nil)
在 NMAPositioningManager.h 中有这个常量:
FOUNDATION_EXPORT NSString *const NMAPositioningManagerDidUpdatePositionNotification;
我的代码在 swift
NotificationCenter.addObserver(self, forKeyPath: "positionDidUpdate", options: NSNotification.Name.NMAPositioningManagerDidUpdatePosition, context: NMAPositioningManager.shared())
灵感来自 Obj-C 中的示例:
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(positionDidUpdate)
name:NMAPositioningManagerDidUpdatePositionNotification
object:[NMAPositioningManager sharedNMAPositioningManager]];
我的字段选项有误:
NavigationViewController.swift:30:84: Cannot convert value of type 'NSNotification.Name' to expected argument type 'NSKeyValueObservingOptions'
我必须输入什么才能让我的 Swift 代码正常工作?
编辑:使用 NotificationCenter 而不是 Notification
您应该在 default
单例上调用 addObserver.. 方法
应该是:
NotificationCenter.default.addObserver(self, selector: #selector(positionDidUpdate), name: NSNotification.Name.NMAPositioningManagerDidUpdatePosition, object: NMAPositioningManager.shared())
更新为 SWIFT 5.4
NotificationCenter.default.addObserver(self,
selector: #selector(doThisWhenNotify),
name: NSNotification.Name("notificationKey"),
object: nil)