إعداد iPhone NSUSERDEFAULTS إلى لا شيء عند إغلاق التطبيق أو في الخلفية

StackOverflow https://stackoverflow.com/questions/3642856

  •  30-09-2019
  •  | 
  •  

سؤال

أريد التخلص من جميع المتغيرات المحفوظة في جميع حقول NSUSERDEFAULTS كلما تم إغلاق التطبيق أو تشغيله في الخلفية لفترة معينة من الوقت - قل 5 دقائق.

حاولت إضافة سطر إلى مندوب التطبيق من ApplicationDidFinishLaunching الذي يبدو هكذا:

if (UIApplicationStateBackground == TRUE) {
    NSUserDefaults *profiles = [NSUserDefaults standardUserDefaults];

    [profiles setObject:nil forKey:@"name1"];
    [profiles synchronize];
}

لقد أضفت أيضًا هذا الجزء فقط إلى ApplicationWillerThing:

NSUserDefaults *profiles = [NSUserDefaults standardUserDefaults];

    [profiles setObject:nil forKey:@"name1"];
    [profiles synchronize];

لا يبدو أن أيًا من هذا يعمل وليس لدي أي فكرة عن كيفية ضبط حالة "إذا كانت 5 دقائق قد تجاوزت التطبيق في الخلفية ، حذف متغيرات NSUSERDEFAULTS" - أي مساعدة؟

هل كانت مفيدة؟

المحلول

أوصي بإزالة الكائن بدلاً من إعداده على لا شيء.

- (void)removeObjectForKey:(NSString *)defaultName;

يتمثل السلوك الطبيعي لـ NSUSERDEFAULTS في العودة إلى عدم وجود مفتاح يطابق الاستعلام ، لذلك أعتقد أنه من الأفضل اتباع نفس القاعدة وليس تخزين مفتاح معين.

أتمنى أن يساعد ذلك.

نصائح أخرى

ربما يجب عليك استخدام ApplicationDidentErbackground :. الدفع هذه صفحة Apple Doc.

سأفعل ما يلي: في مكالمة المندوب - (void)applicationWillResignActive:(UIApplication *)application من uiapplication ، سأوفر طابعًا زمنيًا عندما دخل التطبيق الخلفية. في هذه الحالة ، لا يتعين عليك التحقق مما إذا كان التطبيق ذاهبًا إلى الخلفية أو إذا تم تقاطعه للتو على سبيل المثال ، لكن المستخدم يضغط على الإلغاء ويستمر في استخدام التطبيق الخاص بك.

عندما يقوم التطبيق بتشغيل تنفيذ رمز مرة أخرى في طريقة مندوب آخر من UIApplication - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions لتحديد المدة التي كنت غير نشطة ومسح المستخدمين أو لا اعتمادًا على المدة.

لمزيد من المعلومات حول التطبيق يصبح غير نشط وإعادة إطلاقك تحقق من هذه الوثيقة من وثائق Apple http://developer.apple.com/iphone/library/documentation/iphone/conceptual/iphoneosprogrammingguide/coreapplication/coreapplication.html#//apple_ref/doc/uid/tp400072-ch3-sw10

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top