En Objective-C, une notification personnalisée n’est qu’une simple NSString, mais la version WWDC de Swift 3 n’est pas évidente.
Réponses
Trop de publicités?Vous pouvez également utiliser un protocole pour cela
Puis définissez vos noms de notification comme un `` partout où vous voulez. Par exemple :
Et l’utiliser comme
De cette façon les noms notification vont être dissociés de la Fondation . Et seulement, vous devrez modifier votre protocole en cas de la mise en œuvre de
changements.
La Notification.poste est défini comme:
public func post(name aName: NSNotification.Name, object anObject: AnyObject?)
En Objective-C, le nom de notification est une plaine NSString. En Swift, il est défini comme NSNotification.Nom.
NSNotification.Le nom est défini comme:
public struct Name : RawRepresentable, Equatable, Hashable, Comparable {
public init(_ rawValue: String)
public init(rawValue: String)
}
C'est un peu bizarre, car je m'attends à ce qu'il soit un Enum, et de ne pas coutume, struct avec apparemment pas de plus d'avantages.
Il y a un typealias dans la Notification pour NSNotification.Nom:
public typealias Name = NSNotification.Name
La confusion, c'est que, de Notification et de NSNotification existent dans de Swift
Afin de définir votre propre déclaration, ne somethine comme:
public class MyClass {
static let myNotification = Notification.Name("myNotification")
}
Puis l'appeler:
NotificationCenter.default().post(name: MyClass.myNotification, object: self)
Vous pouvez ajouter un initialiseur personnalisé à NSNotification.Name
extension NSNotification.Name {
enum Notifications: String {
case foo, bar
}
init(_ value: Notifications) {
self = NSNotification.Name(value.rawValue)
}
}
Usage:
NotificationCenter.default.post(name: Notification.Name(.foo), object: nil)