programing

Swift 2.0 - 2진수 연산자 "|"를 2개의 UIUser Notification에 적용할 수 없습니다.피연산자

bestprogram 2023. 4. 12. 23:08

Swift 2.0 - 2진수 연산자 "|"를 2개의 UIUser Notification에 적용할 수 없습니다.피연산자

다음과 같이 로컬 알림 응용 프로그램을 등록하려고 합니다.

UIApplication.sharedApplication().registerUserNotificationSettings(UIUserNotificationSettings(forTypes: UIUserNotificationType.Alert | UIUserNotificationType.Badge, categories: nil))

Xcode 7 및 Swift 2.0에서는 에러가 발생.Binary Operator "|" cannot be applied to two UIUserNotificationType operands도와주세요.

Swift 2에서는 일반적으로 이 작업을 수행하는 많은 유형이 OptionSetType 프로토콜을 준수하도록 업데이트되었습니다.이를 통해 어레이와 같은 사용 구문을 사용할 수 있으며, 이 경우 다음을 사용할 수 있습니다.

let settings = UIUserNotificationSettings(forTypes: [.Alert, .Badge], categories: nil)
UIApplication.sharedApplication().registerUserNotificationSettings(settings)

이와 관련하여 옵션세트에 특정 옵션이 포함되어 있는지 여부를 확인하려면 비트 단위 AND 및 영점 체크를 더 이상 사용할 필요가 없습니다.어레이에 값이 포함되어 있는지 확인하는 것과 같은 방법으로 옵션 세트에 특정 값이 포함되어 있는지 여부를 묻는 것만으로 충분합니다.

let settings = UIUserNotificationSettings(forTypes: [.Alert, .Badge], categories: nil)

if settings.types.contains(.Alert) {
    // stuff
}

Swift 3에서는 샘플을 다음과 같이 작성해야 합니다.

let settings = UIUserNotificationSettings(types: [.alert, .badge], categories: nil)
UIApplication.shared.registerUserNotificationSettings(settings)

그리고.

let settings = UIUserNotificationSettings(types: [.alert, .badge], categories: nil)

if settings.types.contains(.alert) {
    // stuff
}

다음과 같이 쓸 수 있습니다.

let settings = UIUserNotificationType.Alert.union(UIUserNotificationType.Badge)

나에게 효과가 있었던 건

//This worked
var settings = UIUserNotificationSettings(forTypes: UIUserNotificationType([.Alert, .Badge, .Sound]), categories: nil)

이것은 Swift 3에서 업데이트 되었습니다.

        let settings = UIUserNotificationSettings(types: [.alert, .badge, .sound], categories: nil)
        UIApplication.shared.registerUserNotificationSettings(settings)

언급URL : https://stackoverflow.com/questions/30761996/swift-2-0-binary-operator-cannot-be-applied-to-two-uiusernotificationtype