Saya mencoba mendaftarkan aplikasi saya untuk notifikasi lokal dengan cara ini:
UIApplication.sharedApplication().registerUserNotificationSettings(UIUserNotificationSettings(forTypes: UIUserNotificationType.Alert | UIUserNotificationType.Badge, categories: nil))
Di Xcode 7 dan Swift 2.0 - Saya mendapatkan kesalahan Binary Operator "|" cannot be applied to two UIUserNotificationType operands
. Tolong bantu aku.
Could not find an overload '|' that accepts the supplied arguments
Jawaban:
Di Swift 2, banyak jenis yang biasanya Anda lakukan untuk ini telah diperbarui agar sesuai dengan protokol OptionSetType. Ini memungkinkan untuk array seperti sintaks untuk penggunaan, dan Dalam kasus Anda, Anda dapat menggunakan yang berikut ini.
Dan pada catatan terkait, jika Anda ingin memeriksa apakah set opsi berisi opsi tertentu, Anda tidak perlu lagi menggunakan bitwise AND dan nil check. Anda cukup meminta opsi yang disetel apakah itu berisi nilai tertentu dengan cara yang sama seperti Anda akan memeriksa apakah array berisi nilai.
Dalam Swift 3 , sampel harus ditulis sebagai berikut:
dan
sumber
flags |= .Alert?
dapat, Bisakah Anda menggunakanflags = [flags, .Alert]
?UIUserNotificationType
, yaituvar flags: UIUserNotificationType = [.Alert, .Badge]
, maka akan diperlakukan seperti satu set, dan Anda bisa menambahkan elemen baik dengan menggunakan set metode instan sepertiinsert()
,union()
,unionInPlace()
, atau dengan pendekatan yang Anda sebutkan tanpa khawatir tentang duplikat.UIUserNotificationType
dan menggunakan sesuatu sepertivar flags = [UIUserNotificationType.Alert, UIUserNotificationType.Badge]
dalam deklarasi Anda, maka tipe flag akan disimpulkan[UIUserNotificationType]
, dan menambahkan elemen ke dalamnya melaluiappend()
atau metode lain akan menghasilkan duplikat. Dalam kasus yang terakhir, Anda cukup menginisialisasi instanceUIUserNotificationType
dengan array sebagai input dan semuanya akan baik-baik saja, tetapi saya merekomendasikan pendekatan berbasis set untuk kejelasan.Anda dapat menulis yang berikut ini:
sumber
NSTrackingAreaOptions.MouseEnteredAndExited.union(NSTrackingAreaOptions.MouseMoved).union(NSTrackingAreaOptions.ActiveAlways)
, tapi terima kasih atas solusi yang berhasilvar options : NSTrackingAreaOptions =[.MouseEnteredAndExited,.MouseMoved,.ActiveAlways]
Apa yang berhasil untuk saya adalah
sumber
Ini telah diperbarui di Swift 3.
sumber