البرمجة

تخزين وإدارة الوقت في تطبيق Swift باستخدام NSUserDefaults

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

لحل هذه المشكلة، يجب أن تقوم بتعيين قيمة CurrentTime كنصف الزوج key-value لتخزينها في NSUserDefaults. في الواقع، يمكنك تحويل الوقت الحالي إلى نص ومن ثم حفظه في NSUserDefaults.

إليك كيف يمكنك تصحيح الشيفرة:

swift
let currentTime = NSDate() // استخدام `let` بدلاً من `var` لأن القيمة لن تتغير let defaults = NSUserDefaults.standardUserDefaults() // تحويل الوقت الحالي إلى نص let currentTimeString = currentTime.description // حفظ النص في NSUserDefaults defaults.setObject(currentTimeString, forKey: "LastLimitReachedTime")

الآن يمكنك استخدام NSUserDefaults لاسترجاع الوقت الذي تم حفظه ومقارنته مع الوقت الحالي لتحديد ما إذا كان المستخدم قد تجاوز الحد الأقصى ومضى ساعة كاملة أم لا.

المزيد من المعلومات

بالطبع، دعونا نوسع على الموضوع بمزيد من المعلومات. فيما يلي شرح تفصيلي للحل الذي تم تقديمه:

في الشيفرة السابقة، تم استخدام NSDate() للحصول على الوقت الحالي. يتم ثم تحويل هذا الوقت إلى نص (String) باستخدام الدالة description، والتي تقدم وصفًا نصيًا للتاريخ والوقت الحالي.

ثم تم استخدام NSUserDefaults.standardUserDefaults() للوصول إلى مستودع الإعدادات (UserDefaults). يتم حفظ الوقت الحالي كقيمة لمفتاح معين، في هذه الحالة يتم استخدام مفتاح “LastLimitReachedTime”. يتم ذلك باستخدام الدالة setObject(_:forKey:).

للوصول إلى الوقت المحفوظ، يمكن استخدام الدالة objectForKey(_:) لاسترجاع القيمة المرتبطة بالمفتاح المحدد. يمكن بعد ذلك تحويل هذا النص إلى NSDate إذا كنت بحاجة إلى العمل معه ككائن NSDate مرة أخرى.

مثال:

swift
if let savedTimeString = defaults.objectForKey("LastLimitReachedTime") as? String { // تحويل النص إلى NSDate if let savedTime = NSDateFormatter().dateFromString(savedTimeString) { // يمكنك استخدام savedTime هنا للقيام بمقارنات أو أي عمليات أخرى } }

هذا الأمر يوفر لك وسيلة لحفظ الوقت عندما يتم الوصول إلى الحد الأقصى ومن ثم استخدامه لمراقبة متى يمكن للمستخدم الاستمرار في اللعب بناءً على الفاصل الزمني الذي قررته (مثل ساعة واحدة).

زر الذهاب إلى الأعلى