سؤال

في تطبيقي ، أستخدم كائن NSUSERDEFAULTS لتخزين اسم المستخدم وكلمة المرور وعنوان URL للخادم في تطبيق الإعدادات المدمجة. إذا لم يتم حفظ البيانات ، يتم تقديم واجهة تسجيل الدخول إلى تسجيل الدخول ، وعند تسجيل الدخول الناجح ، يتم حفظ اسم المستخدم وكلمة المرور. ثم في تطبيقي ، لدي طريقة عرض يعرض هذه المعلومات ، لكن النص مفقود كما لو أن البيانات لم يتم حفظها في الإعدادات حتى الآن. هذا هو الرمز:

...
NSUserDefaults* appSettings = [NSUserDefaults standardUserDefaults];
[appSettings setObject:username forKey:USERNAME];
[appSettings setObject:password forKey:PASSWORD];

if ( [appSettings synchronize] ) {

   // display an alert with a positive message
} else {
   // display an alert with a negative message

}

لذلك ، بعد تسجيل الدخول إلى الرسالة الإيجابية ، ولكن عندما أحضر البيانات مرة أخرى ، لا يوجد شيء هناك ، إلا إذا قمت بإعادة تشغيل التطبيق.

ما الذي يجب علي فعله لحفظ البيانات على الفور ، أو على الأقل قبل أن تحتاج وحدة تحكم عرض أخرى إلى قراءة الإعدادات؟

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

المحلول

يقوم كائن NSUSERDEFAULTS بتخزين بياناته في الذاكرة ، وهو كائن عالمي (إلى تطبيقك ، على أي حال). وبالتالي ، يجب أن يكون هناك أي شيء تقوم بتخزينه متاحًا على الفور لأي شيء يحاول الوصول إليه بعد ذلك. لا تحتاج إلى الاتصال بمزامنة هنا. إذا لم تحصل على بياناتك ، فيجب عليك التحقق من ترتيب مكالماتك للتأكد من استدعائها عندما تعتقد أنها.

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