Trong Swift 2, nhiều loại mà bạn thường làm điều này đã được cập nhật để phù hợp với giao thức OptionSetType. Điều này cho phép mảng giống như cú pháp sử dụng, và trong trường hợp của bạn, bạn có thể sử dụng như sau.
let settings = UIUserNotificationSettings(forTypes: [.Alert, .Badge], categories: nil)
UIApplication.sharedApplication().registerUserNotificationSettings(settings)
Và trên ghi chú liên quan, nếu bạn muốn kiểm tra tùy chọn có chứa tùy chọn cụ thể, bạn không còn cần phải sử dụng bit AND và kiểm tra không. Bạn có thể chỉ cần đặt tùy chọn nếu nó chứa một giá trị cụ thể giống như cách bạn sẽ kiểm tra xem một mảng có chứa một giá trị hay không.
let settings = UIUserNotificationSettings(forTypes: [.Alert, .Badge], categories: nil)
if settings.types.contains(.Alert) {
// stuff
}
Trong Swift 3, các mẫu phải được viết như sau:
let settings = UIUserNotificationSettings(types: [.alert, .badge], categories: nil)
UIApplication.shared.registerUserNotificationSettings(settings)
và
let settings = UIUserNotificationSettings(types: [.alert, .badge], categories: nil)
if settings.types.contains(.alert) {
// stuff
}
Nguồn
2015-06-10 17:30:17
bao quanh với "()" làm việc cho tôi UIApplication.sharedApplication() registerUserNotificationSettings (UIUserNotificationSettings (forTypes:. (UIUserNotificationType .Alert | UIUserNotificationType.Badge), loại: nil)) –
Bây giờ tôi có: 'Không thể tìm thấy tình trạng quá tải '|' chấp nhận các đối số được cung cấp' –
Tôi không có ý tưởng nào khác, xin lỗi. –