معلومة

سلسلة قلوب قطط

سلسلة قلوب قطط



We are searching data for your request:

Forums and discussions:
Manuals and reference books:
Data from registers:
Wait the end of the search in all databases.
Upon completion, a link will appear to access the found materials.

سلسلة قلوب قطط كلاب فئران أرانب

لقد كنت أبحث في رمز التطبيق "String of Hearts" ، المتاح لأجهزة iOS. الغرض منه هو العثور على أطول سلسلة من القلوب في سلسلة من الشخصيات الأخرى.

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

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

إذا كنت تريد فكرة بسيطة ، فإن هذا التطبيق لديه فكرة بسيطة. لكنني لا أعتقد أنه مثال رائع على إعادة استخدام الكود.

تطبيق String of Hearts عبارة عن مزيج من ثلاث فئات: السلسلة والقلوب وواجهة المستخدم. تقوم كل فئة من فئات السلسلة والقلوب بتخزين الكثير من البيانات. فئة السلسلة هي مجرد مجموعة مرتبة من الأحرف. يستخدم فئة NSCache لحفظ الذاكرة. تخزن فئة القلوب تسلسل القلوب ، وتستخدم فئة NSUserDefaults لحفظ البيانات. تخزن فئة واجهة المستخدم القليل من البيانات ، نص الملصق.

من الصعب عمل مثال رمز عام يوضح كل هذا ، لذا دعنا ننتقل إلى الشفرة قليلاً ، لإظهار بعض قرارات التصميم وشرح الشفرة.

أولا ، فئة السلسلة. تحتوي هذه الفئة على سلسلة واحدة:IBAction func heart (المرسل: UIButton) {…}. إنها طريقة إجراء ، لأنك ستستخدمها لاستدعاء وظيفة أو إجراء تغييرات على خاصية في وحدة التحكم في العرض. كما أن له نوعًا مرتبطًا به ، زر UIButton.heart (أو القلب: UIButton).

فئة القلوب كائن نموذجي. إنها فئة تمثل وحدة واحدة من البيانات: تسلسل القلوب. يحتوي على سلسلة ومجموعة من السلاسل ، والتي تمثل التسلسل.

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

تستخدم فئة القلوب فئة NSUserDefaults لحفظ البيانات.

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

فئة واجهة المستخدم هي كائن من فئة NSUserDefaults. لها عدة طرق مرتبطة بها ، ولها خاصية تسمى UserDefaults ، ولكنها لا تحتوي على أي بيانات.

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

فئة وحدة التحكم في العرض هي فئة من فئة NSUserDefaults. لديها بعض الوظائف المرتبطة بها ، لكنها مجرد بنية بيانات.

تشكل وحدة التحكم في العرض ، مع فئة NSUserDefaults الخاصة بها ، UITableViewController. إنه تنفيذ ملموس لفئة UITableViewController.

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

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

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

إنشاء سينجلتون

إن Singleton في نموذج التطبيق لدينا هو مجرد مفرد يدير مجموعة من فصول NSUserDefaults. إنه مفرد لأن الكائن سيكون له دائمًا مثيل واحد فقط.

سننشئه على النحو التالي:

يعد التابع initWithKey مُهيئًا مطلوبًا لـ Singletons. يجب أن يتم إعطاؤه سلسلة مفاتيح لـ Singleton. ثم يقوم بإنشاء مفرد من المفتاح. تقوم بإرجاع Singleton الذي تم إنشاؤه حديثًا ، أو لا شيء إذا لم تتمكن من إنشاء واحدة.

طرق الفصل في Singleton هي للحصول على المتغيرات وتعيينها في Singleton. على سبيل المثال ، يمكننا الحصول على جميع بيانات NSUserDefaults التي نحتاجها من خلال مطالبتنا بإرجاع مصفوفة التفضيلات الحالية.

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

أخيرًا ، سنحتاج إلى استخدام Singleton أينما تم استخدامه.

يمكن أن تكون NSUserDefaults مفردة أيضًا ، لكن لديها طريقة مختلفة للحصول على خصائصها. كما أنه آمن للخيط ، ولكن أمامه المزيد من العمل للقيام به. لذلك دعونا نرى كيف يعمل:

نطلب من Singleton الحصول على كائن NSUserDefaults الحالي وجعله مفوضًا لكائن prefs الذي تم إنشاؤه حديثًا. ثم نحتاج إلى إنشاء NSUserDefaults جديد.

نطلبها للحصول على NSUserDefaults الحالية وتعيينها إلى منطقتنا. الطرق الأخرى تعمل بنفس الطريقة.

توفر طرق فئة NSUserDefaults طريقة لوضع التفضيلات في الإعدادات الافتراضية للمستخدم ، لذلك سنحتاج إلى تنفيذها.

للإضافة إلى جدول طرق الفئة ، توفر NSUserDefaults طريقة لتعيين الإعدادات الافتراضية لمفتاح معين.

للإضافة إلى جدول طرق الفئة ، توفر NSUserDefaults طريقة لتعيين الإعدادات الافتراضية لمفتاح معين.

سنقوم بتعيين الافتراضي للمفتاح الافتراضي في NSUserDefaults عند إنشائه. سننشئ طريقة تسمى "setDefaults:" لتسهيل تعيين الإعدادات الافتراضية لمفتاح معين.

سنقوم بتعيين الافتراضي للمفتاح الافتراضي في NSUserDefaults عند إنشائه


شاهد الفيديو: Simple Crochet Mini Hearts String (أغسطس 2022).

Video, Sitemap-Video, Sitemap-Videos