2017-01-29 7 views
1

私は実際にオブザーバの新しい構文を理解するのに苦労しています。Swiftのオブザーバとセレクタを追加する3

は、あなたは私スウィフト3.

nc.addObserver(self, selector: #selector(MapViewController.locationUpdated(_:)), name: LocationNotification.kLocationUpdated, object: nil) 
nc.addObserver(self, selector: #selector(MapViewController.locationAuthorizationStatusChanged(_:)), name: LocationNotification.kAuthorizationStatusChanged, object: nil) 
nc.addObserver(self, selector: #selector(MapViewController.locationManagerDidFailWithError(_:)), name: LocationNotification.kLocationManagerDidFailWithError, object: nil) 

多くのおかげでこれを翻訳することができます!

答えて

1

は、その上の場合(メソッドは、公開通知を受け取る作ることを忘れないでください別のコントローラ)。

プロセッサタグobjcを追加して、objective-cメソッドで呼び出せるようにする必要があります。

割り当てオブザーバー:

nc.addObserver(
    self, 
    selector: #selector(received(notification:)), 
    name: LocationNotification.kLocationUpdated, object: nil 
) 

ハンドル通知:このことができます

@objc public func locationUpdated(notification:Notification) { 
    //Do something 
} 

願っています! :-)

1

あなたのコードの構文はこの構文でスウィフト3.有効です、私はあなたのLocationNotificationオブジェクトは次のようになりますと仮定しています:

struct LocationNotification { 
    static let kLocationUpdated = Notification.Name(rawValue: "LocationUpdated") 
    static let kAuthorizationStatusChanged = Notification.Name(rawValue: "AuthorizationStatusChanged") 
    static let kLocationManagerDidFailWithError = Notification.Name(rawValue: "LocationManagerDidFailWithError") 
} 
関連する問題