English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
في هذا الدليل، ستتعلم ما هو دictionnary وكيفية إنشائه وكيفية إجراء بعض العمليات الشائعة في دictionnary.
في المقال السابقSwift arraysفي هذا المقال، تعلمنا كيفية حفظ عدة قيم في المتغير/المثبت. في هذا المقال، سنناقش كيفية حفظ البيانات/القيم كـ مفتاح: قيمة.
دictionnary مجرد حاوية يمكنها حفظ عدة بيانات كـ مفتاح: قيمة غير مرتبة.
كل قيمة مرتبطة بمفتاح فريد، وتخزن البيانات في قائمة غير مرتبة كـالمجموعاتأيضًا، فإن ترتيب الحصول على العناصر ليس نفس الترتيب الذي تعريفته في دictionnary.
عندما تحتاج إلى البحث عن قيمة تحتوي على معرف معين في مجموعة، يمكنك استخدام دictionnary بدلاً من مجموعة. افترض أنك تريد البحث عن عاصمة هذا البلد. في هذه الحالة، ستحتاج إلى إنشاء دictionnary يحتوي على مفتاحين: بلد، عاصمة المدينة. الآن يمكنك الحصول على القيمة: العاصمة من المجموعة عن طريق البحث عن المفتاح: البلد.
ببساطة، ستجمع بين المفتاح والقيمة. في المثال السابق، قمنا بمقارنة دولة مع عاصمتها.
يمكنك إنشاء دictionnary فارغ عن طريق تحديد نوع البيانات key: value في بين البكرات [].
تعريف دictionnary فارغ من نوع [Int: String]: let emptyDic:[Int: String] = [:] print(emptyDic)
عند تشغيل البرنامج، يتم إصدار الناتج التالي:
[:]أو
يمكنك أيضًا تعريف دictionnary فارغ كما يلي:
تعريف دictionnary فارغ من نوع Int إلى نوع String: let emptyDic:Dictionary<Int, String> = [:] print(emptyDic)
في البرنامج المذكور أعلاه، تم إعلان قاموس من النوع dictionary باستخدام مفتاح من النوع Int ومفتاح من النوع String، وتم إعداده باستخدام القيمة 0.
أو
بما أن Swift لغة استنتاج النوع، يمكنك أيضًا إنشاء قاموس دون تحديد نوع البيانات، ولكن يجب أن تستخدم بعض القيم لتكون قادرة على استنتاجها من قبل معالج التجميع:
let بعض_القواميس = ["a":1, "b":2, "c":3, "d":4, "e":5, "f":6, "g":7, "h":8, "i":9] print(someDic)
عند تشغيل البرنامج، يتم إصدار الناتج التالي:
["b": 2, "a": 1, "i": 9, "c": 3, "e": 5, "f": 6, "g": 7, "d": 4, "h": 8]
في البرنامج المذكور أعلاه، تم إعلان قاموس دون تحديد نوعه بشكل صريح، بل تم إعداده باستخدام بعض العناصر الافتراضية.
المكونات موجودة في زوج key:value، حيث يكون نوع key نوع String، ونوع value نوع Int. لأن القاموس قائمة غير مرتبة، يتم طباعة print(someDic) بترتيب مختلف عن الترتيب المحدد.
يمكننا أيضًا استخدام مجموعة لإنشاء قاموس.
let customKeys = ["Facebook", "Google", "Amazon"] let customValues = ["Mark", "Larry", "Jeff"] let newDictionary = Dictionary(uniqueKeysWithValues: zip(customKeys,customValues)) print(newDictionary)
عند تشغيل البرنامج، يتم إصدار الناتج التالي:
["Amazon": "Jeff", "Google": "Larry", "Facebook": "Mark"]
في البرنامج المذكور أعلاه، يخلق zip(customKeys,customValues) سلسلة من التuple الجديدة، كل عنصر منها يمثل القيمة من customKeys و customValues.
الآن، يمكننا نقل هذا السلسلة إلى Dictionary(Unique eKeysWithValues: ) إعداد القيمة الأولية وتحديد قاموس جديد. لذلك، يتم طباعة print(NewDictionary) قاموس جديد يحتوي على عناصر من كلا الأشكال.
بصفتها مجموعة، يمكنك الوصول إلى عناصر القاموس باستخدام نطاق النص. يجب أن تحتوي العلامات التكبيرية على المفتاح الذي تريد الوصول إليه بعد اسم القاموس.
let بعض_القواميس = ["a":1, "b":2, "c":3, "d":4, "e":5, "f":6, "g":7, "h":8, "i":9] print(بعض_القواميس["a"]) print(بعض_القواميس["h"])
عند تشغيل البرنامج، يتم إصدار الناتج التالي:
Optional(1) Optional(8)
يمكنك أيضًا استخدام دورة for-in لاستكشاف عناصر القائمة.
let بعض_القواميس = ["a":1, "b":2, "c":3, "d":4, "e":5, "f":6, "g":7, "h":8, "i":9] for (key,value) in بعض_القواميس { print("key:\(key) value:\(value)") }
عند تشغيل البرنامج، يتم إصدار الناتج التالي:
المفتاح:b القيمة:2 المفتاح:a القيمة:1 المفتاح:i القيمة:9 المفتاح:c القيمة:3 المفتاح:e القيمة:5 المفتاح:f القيمة:6 المفتاح:g القيمة:7
يمكنك إضافة العناصر باستخدام نحوية الأسهم في القائمة. تحتاج إلى تضمين المفتاح الجديد بصفتها مفتاحًا مزدوجًا، وتخصيص قيمة جديدة لنوع القائمة.
var someDictionary = ["Nepal":"Kathmandu", "China":"Beijing", "India":"NewDelhi"] بعض_القواميس["Japan"] = "Tokyo" print(someDictionary)
عند تشغيل البرنامج، يتم إصدار الناتج التالي:
["Japan": "Tokyo", "China": "Beijing", "India": "NewDelhi", "Nepal": "Kathmandu"]
في المثال السابق، استخدمنا نحوية الأسهم لإنشاء كلمة مفتاح جديدة في القائمة المحددة "Japan": "Tokyo".
يمكنك أيضًا استخدام نحوية الأسهم لتغيير القيمة المرتبطة بكلمة المفتاح المحددة:
var someDictionary = ["Nepal":"Kathmandu", "China":"Beijing", "India":"NewDelhi"] بعض_القواميس["Nepal"] = "KATHMANDU" print(someDictionary)
عند تشغيل البرنامج، يتم إصدار الناتج التالي:
["China": "Beijing", "India": "NewDelhi", "Nepal": "KATHMANDU"]
هذا الخصائص يحدد إذا كانت القائمة فارغة أم لا. إذا لم تحتوي القائمة على أي قيمة، فإنها تعود بـ true، وإلا فإنها تعود بـ false.
let someDictionary = ["Nepal":"Kathmandu", "China":"Beijing", "India":"NewDelhi"] print(بعض_القواميس.isEmpty)
عند تشغيل البرنامج، يتم إصدار الناتج التالي:
false
هذا الخصائص يستخدم لزيارة العنصر الأول في القائمة
let someDictionary = ["Nepal":"Kathmandu", "China":"Beijing", "India":"NewDelhi"] print(بعض_القواميس.first)
عند تشغيل البرنامج، يتم إصدار الناتج التالي:
Optional((key: "China", value: "Beijing"))
هذه الخاصية تعود عدد العناصر في القاموس (مفتاح/قيمة).
let someDictionary = ["Nepal":"Kathmandu", "China":"Beijing", "India":"NewDelhi"] print(someDictionary.count)
عند تشغيل البرنامج، يتم إصدار الناتج التالي:
3
هذه الخاصية تعود جميع المفاتيح في القاموس.
var someDictionary = ["Nepal":"Kathmandu", "China":"Beijing", "India":"NewDelhi"] let dictKeys = Array(someDictionary.keys) print(dictKeys)
عند تشغيل البرنامج، يتم إصدار الناتج التالي:
["China", "India", "Nepal"]
بالمثل، يمكنك أيضًا استخدام values الخصائص للحصول على جميع القيم في القاموس.
هذه الوظيفة تستخدم لإزالة القيمة المحددة باستخدام المفتاح المحدد من القاموس ويعود القيمة. ستبدأ هاتان المفتاحين القيم من القاموس.
var someDictionary = ["Nepal":"Kathmandu", "China":"Beijing", "India":"NewDelhi"] let val = someDictionary.removeValue(forKey: "Nepal") print(val) print(someDictionary)
عند تشغيل البرنامج، يتم إصدار الناتج التالي:
Optional("Kathmandu") ["India": "NewDelhi", "China": "Beijing"]
بالمثل، يمكنك أيضًا استخدام removeAll وظيفة إزالة جميع العناصر من القاموس.
1.عند استخدام نطاق النص التوجيهي لتحديد العناصر في القاموس، يجب التأكد من أن المفتاح موجود في النطاق، وإلا ستحصل علىnilالقيم. دعونا نرى ذلك في مثال:
var someDictionary = ["Nepal":"Kathmandu", "China":"Beijing", "India":"NewDelhi"] let val = someDictionary["Japan"] print(val)
عند تشغيل البرنامج، يتم إصدار الناتج التالي:
nil
في هذا البرنامج، لا يوجد مفتاح Japan . لذلك، عند محاولة الوصول إلى مفتاح "Japan عندما يتم الوصول إلى ذلك، ستحصل على قيمة nil.
2.بالمثل، يتم التمييز بين الحروف الكبيرة والصغيرة في مفاتيح القيم في Swift، لذا يجب عليك التأكد من استخدام مفاتيح القيم الصحيحة من حيث الحروف الكبيرة والصغيرة. وإلا ستحصل على قيمة nil. دعونا نرى ذلك في مثال:
var someDictionary = ["Nepal":"Kathmandu", "China":"Beijing", "India":"NewDelhi"] let val = someDictionary["nepal"] print(val)
عند تشغيل البرنامج، يتم إصدار الناتج التالي:
nil
في هذا البرنامج، لا يوجد مفتاح "nepal". لذلك، عند محاولة الوصول إلى مفتاح "nepal"، ستحصل على قيمة nil.
3.إذا لم تكن قيمة المفتاح المحددة موجودة، هناك طريقة أخرى لتقديم القيمة الافتراضية. دعونا نرى ذلك في المثال:
var someDictionary = ["Nepal":"Kathmandu", "China":"Beijing", "India":"NewDelhi"] let val = someDictionary["nepal", default:"Not Found"] print(val)
عند تشغيل البرنامج، يتم إصدار الناتج التالي:
Not Found
في البرنامج المذكور أعلاه، قمنا بتحديد قيمة افتراضية في المعلمة الافتراضية عند الوصول إلى القاموس. إذا لم تكن قيمة المفتاح موجودة، يتم العودة إلى القيمة الافتراضية، وإلا يتم العودة إلى القيمة الموجودة
في مثالنا، المفتاح“nepal”لا يوجد، لذا يعود البرنامج إلى القيمة الافتراضية: Not Found.