J'essaie d'enregistrer ma candidature pour les notifications locales de cette façon:
UIApplication.sharedApplication().registerUserNotificationSettings(UIUserNotificationSettings(forTypes: UIUserNotificationType.Alert | UIUserNotificationType.Badge, categories: nil))
Dans Xcode 7 et Swift 2.0 - je reçois une erreur Binary Operator "|" cannot be applied to two UIUserNotificationType operands
. Aidez-moi, s'il vous plaît.
Could not find an overload '|' that accepts the supplied arguments
Réponses:
Dans Swift 2, de nombreux types pour lesquels vous effectuez généralement cette opération ont été mis à jour pour se conformer au protocole OptionSetType. Cela permet une syntaxe de type tableau pour l'utilisation, et dans votre cas, vous pouvez utiliser ce qui suit.
Et sur une note connexe, si vous voulez vérifier si un jeu d'options contient une option spécifique, vous n'avez plus besoin d'utiliser ET au niveau du bit et une vérification nulle. Vous pouvez simplement demander au jeu d'options s'il contient une valeur spécifique de la même manière que vous vérifieriez si un tableau contenait une valeur.
Dans Swift 3 , les échantillons doivent être écrits comme suit:
et
la source
flags |= .Alert?
Pouvez-vous l'utiliserflags = [flags, .Alert]
?UIUserNotificationType
, par exemplevar flags: UIUserNotificationType = [.Alert, .Badge]
, il sera traité comme un ensemble, et vous pouvez ajouter un élément soit en utilisant ensemble les méthodes d'instance aimentinsert()
,union()
,unionInPlace()
ou avec l'approche que vous avez mentionné sans se soucier de doublons.UIUserNotificationType
et utilisez quelque chose commevar flags = [UIUserNotificationType.Alert, UIUserNotificationType.Badge]
dans votre déclaration, alors le type de l'indicateur sera inféré[UIUserNotificationType]
et l'ajout d'éléments à celui-ci viaappend()
ou d'autres méthodes entraînera des doublons. Dans le cas de ce dernier, vous pouvez simplement initialiser une instance deUIUserNotificationType
avec le tableau en entrée et tout ira bien, mais je recommande l'approche basée sur l'ensemble pour plus de clarté.Vous pouvez écrire ce qui suit:
la source
NSTrackingAreaOptions.MouseEnteredAndExited.union(NSTrackingAreaOptions.MouseMoved).union(NSTrackingAreaOptions.ActiveAlways)
, mais merci pour une solution de travailvar options : NSTrackingAreaOptions =[.MouseEnteredAndExited,.MouseMoved,.ActiveAlways]
Ce qui a fonctionné pour moi était
la source
Cela a été mis à jour dans Swift 3.
la source