[ios] Swift 2.0-이진 연산자“|” 두 UIUserNotificationType 피연산자에 적용 할 수 없습니다

다음과 같은 방법으로 로컬 알림에 대한 응용 프로그램을 등록하려고합니다.

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
}

에서 스위프트 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)


답변