NSUSERDEFAULTS BOOLFORKEY القيد حسب التصميم؟
-
25-09-2019 - |
سؤال
ال NSUserDefaults
وثائق API لديها boolForKey:
الرسالة الموصوفة مثل هذه -
boolForKey:
إرجاع القيمة المنطقية المرتبطة بالمفتاح المحدد.
- (BOOL)boolForKey:(NSString *)defaultName
قيمة الإرجاع إذا كانت القيمة المنطقية مرتبطة بـ DefaultName في تخفيضات المستخدم ، يتم إرجاع هذه القيمة. خلاف ذلك ، لا يتم إرجاع لا.
بالنظر إلى ذلك [[NSUserDefaults standardUserDefaults] boolForKey:@"some_Key"]
يعيد لا يمكن أن يكون إما لأن المفتاح غير موجود أو موجود المفتاح ولديه أ boolean
القيمة لا. كيف يمكننا التمييز؟ اعتبارا من الآن ، لا يمكنني إلا تجنب الدخول في هذا الموقف في المقام الأول.
المحلول
أنت تستخدم الإعدادات الافتراضية للمستخدم بشكل غير صحيح. عند إطلاق تطبيقك ، من المفترض أن تتصل -[NSUserDefaults registerDefaults:]
مع قاموس يحتوي على القيم الافتراضية لجميع التفضيلات.
ثم ، إذا لم يكن المستخدم يضع تفضيلًا ، -boolForKey
سيعود القيمة الافتراضية.
نصائح أخرى
استخدم ال -objectForKey:
الطريقة كذلك. هذا سيخبرك ما إذا كان المفتاح موجودًا.