সুইফট ২.০ - বাইনারি অপারেটর "|" দুটি UIUserNotificationsType অপারেন্ডগুলিতে প্রয়োগ করা যাবে না


193

আমি স্থানীয় বিজ্ঞপ্তির জন্য এইভাবে আমার আবেদনটি নিবন্ধ করার চেষ্টা করছি:

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

এক্সকোড 7 এবং সুইফ্ট 2.0 - এ আমি ত্রুটি পেয়েছি Binary Operator "|" cannot be applied to two UIUserNotificationType operands। আমাকে সাহায্য করুন.


2
। |: "()" আমার জন্য কাজ করে UIApplication.sharedApplication () registerUserNotificationSettings (শূন্য) UIUserNotificationType.Badge), বিভাগ (UIUserNotificationType.Alert UIUserNotificationSettings (forTypes) সঙ্গে সারাউন্ডস
Nekak Kinich

1
এখন আমার আছে:Could not find an overload '|' that accepts the supplied arguments
নিকিতা জেরনভ

দুঃখিত, আমার আর কোনও ধারণা নেই।
নেকক কিনিচ

উত্তর:


387

সুইফট 2-এ, আপনি সাধারণত যে ধরণের জন্য এটি করতে চান তা অপশনসেটটাইপ প্রোটোকলের সাথে সামঞ্জস্য করার জন্য আপডেট করা হয়েছে। এটি ব্যবহারের জন্য সিনট্যাক্সের মতো অ্যারের অনুমতি দেয় এবং আপনার ক্ষেত্রে, আপনি নিম্নলিখিত ব্যবহার করতে পারেন।

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

এবং সম্পর্কিত নোটের ভিত্তিতে, আপনি যদি কোনও বিকল্প সেটটিতে একটি নির্দিষ্ট বিকল্প রয়েছে কিনা তা পরীক্ষা করতে চান, আপনাকে আর বিটওয়াইড এবং নীল চেক ব্যবহার করতে হবে না। আপনি কেবল বিকল্প সেটটি জিজ্ঞাসা করতে পারেন যদি এটিতে কোনও নির্দিষ্ট মান রয়েছে একইভাবে আপনি এটি পরীক্ষা করতে পারেন যে কোনও অ্যারেতে কোনও মান রয়েছে কিনা।

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
}

1
আপনি যদি flags |= .Alert? ব্যবহার করতে পারেন তবে কি হবে flags = [flags, .Alert]?
ব্যবহারকারী3246173

উদাহরণস্বরূপ, এটি কি এমন সেটের মতো চিকিত্সা করা হবে যেখানে মানগুলি অনন্য বা একটি অ্যারে হিসাবে সম্ভবত কোনও ভুল চূড়ান্ত মান নিয়ে যেতে পারে?
ব্যবহারকারী3246173

@ user3246173 এটি ফ্ল্যাগের ভেরিয়েবল কীভাবে ঘোষণা করা হয় তার উপর নির্ভর করে। পতাকা ধরন স্পষ্টভাবে হিসেবে ঘোষণা করা হয়, তাহলে UIUserNotificationType, অর্থাত্ var flags: UIUserNotificationType = [.Alert, .Badge], তাহলে এটি একটি সেট মত চিকিত্সা করা হবে, এবং আপনি সেট উদাহরণস্বরূপ পদ্ধতি পছন্দ ব্যবহার করে পারেন একটি উপাদান যোগ করতে পারিনি insert(), union(), unionInPlace(), অথবা পদ্ধতি আপনাকে সদৃশ সম্পর্কে উদ্বেজক ছাড়া উল্লিখিত।
মিক ম্যাককালাম

আপনি যদি ফ্ল্যাগটি টাইপযুক্ত হিসাবে স্পষ্টভাবে ঘোষণা না করেন এবং আপনার ঘোষণার UIUserNotificationTypeমতো কিছু ব্যবহার করেন var flags = [UIUserNotificationType.Alert, UIUserNotificationType.Badge], তবে পতাকাটির ধরণটি অনুমান করা হবে [UIUserNotificationType]এবং এর মধ্যে উপাদান append()বা অন্য পদ্ধতির মাধ্যমে যুক্ত করার ফলে সদৃশ হবে। পরেরটির ক্ষেত্রে, আপনি কেবল UIUserNotificationTypeঅ্যারের সাথে ইনপুট হিসাবে একটি উদাহরণটি প্রাথমিকভাবে শুরু করতে পারেন এবং সমস্ত ভাল হবে, তবে আমি স্বচ্ছতার জন্য সেট ভিত্তিক পদ্ধতির প্রস্তাব দিই।
মিক ম্যাককালাম

35

আপনি নিম্নলিখিত লিখতে পারেন:

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

9
উপায় খুব জটিল।
সত্য

1
বাহ এটা ঘৃণ্য দেখাচ্ছে! NSTrackingAreaOptions.MouseEnteredAndExited.union(NSTrackingAreaOptions.MouseMoved).union(NSTrackingAreaOptions.ActiveAlways), তবে একটি কার্যক্ষম সমাধানের জন্য ধন্যবাদ
চাদ সায়রা

2
আমি যদি ভুল না হয় আপনি লিখতে পারেনvar options : NSTrackingAreaOptions =[.MouseEnteredAndExited,.MouseMo‌​ved,.ActiveAlways]
Bobj-C

7

আমার জন্য যা কাজ ছিল তা ছিল

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

9
উপরের গৃহীত উত্তরের মতো দেখতে প্রায় ঠিক দেখাচ্ছে। একটি মন্তব্য হিসাবে বিবেচনা?
সর্বাধিক ম্যাকলিয়ড

2

এটি সুইফট 3 এ আপডেট করা হয়েছে।

        let settings = UIUserNotificationSettings(types: [.alert, .badge, .sound], categories: nil)
        UIApplication.shared.registerUserNotificationSettings(settings)
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.