English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

مجموعات Swift (Dictionary)

في هذا الدليل، ستتعلم ما هو دictionnary وكيفية إنشائه وكيفية إجراء بعض العمليات الشائعة في دictionnary.

في المقال السابقSwift arraysفي هذا المقال، تعلمنا كيفية حفظ عدة قيم في المتغير/المثبت. في هذا المقال، سنناقش كيفية حفظ البيانات/القيم كـ مفتاح: قيمة.

ما هو دictionnary؟

دictionnary مجرد حاوية يمكنها حفظ عدة بيانات كـ مفتاح: قيمة غير مرتبة.

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

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

ببساطة، ستجمع بين المفتاح والقيمة. في المثال السابق، قمنا بمقارنة دولة مع عاصمتها.

كيفية إعلان دictionnary في Swift؟

يمكنك إنشاء دictionnary فارغ عن طريق تحديد نوع البيانات key: value في بين البكرات [].

مثال 1: إعلان دictionnary فارغ

تعريف د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 لغة استنتاج النوع، يمكنك أيضًا إنشاء قاموس دون تحديد نوع البيانات، ولكن يجب أن تستخدم بعض القيم لتكون قادرة على استنتاجها من قبل معالج التجميع:

مثال 2: إعلان قاموس يحتوي على بعض القيم

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) بترتيب مختلف عن الترتيب المحدد.

مثال 3: إنشاء قاموس من مجموعتين

يمكننا أيضًا استخدام مجموعة لإنشاء قاموس.

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) قاموس جديد يحتوي على عناصر من كلا الأشكال.

كيف يمكن الوصول إلى عناصر القاموس في Swift؟

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

مثال 4: الوصول إلى عناصر القاموس

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 لاستكشاف عناصر القائمة.

مثال 5: استخدام دورة 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

كيفية تعديل عناصر القائمة في Swift؟

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

مثال 6: تعيين عنصر في القائمة

var someDictionary = ["Nepal":"Kathmandu", "China":"Beijing", "India":"NewDelhi"]
بعض_القواميس["Japan"] = "Tokyo"
print(someDictionary)

عند تشغيل البرنامج، يتم إصدار الناتج التالي:

["Japan": "Tokyo", "China": "Beijing", "India": "NewDelhi", "Nepal": "Kathmandu"]

في المثال السابق، استخدمنا نحوية الأسهم لإنشاء كلمة مفتاح جديدة في القائمة المحددة "Japan": "Tokyo".

يمكنك أيضًا استخدام نحوية الأسهم لتغيير القيمة المرتبطة بكلمة المفتاح المحددة:

مثال 7: تغيير عنصر القائمة

var someDictionary = ["Nepal":"Kathmandu", "China":"Beijing", "India":"NewDelhi"]
بعض_القواميس["Nepal"] = "KATHMANDU"
print(someDictionary)

عند تشغيل البرنامج، يتم إصدار الناتج التالي:

["China": "Beijing", "India": "NewDelhi", "Nepal": "KATHMANDU"]

الوظائف والخصائص المدمجة في القائمة

1. خاصية isEmpty - تحديد إذا كانت القائمة فارغة

هذا الخصائص يحدد إذا كانت القائمة فارغة أم لا. إذا لم تحتوي القائمة على أي قيمة، فإنها تعود بـ true، وإلا فإنها تعود بـ false.

مثال 8: كيف تعمل isEmpty؟

let someDictionary = ["Nepal":"Kathmandu", "China":"Beijing", "India":"NewDelhi"]
print(بعض_القواميس.isEmpty)

عند تشغيل البرنامج، يتم إصدار الناتج التالي:

false

2.first الخاصية - عودة العنصر الأول في القائمة

هذا الخصائص يستخدم لزيارة العنصر الأول في القائمة

مثال 9: كيف تعمل أولاً؟

let someDictionary = ["Nepal":"Kathmandu", "China":"Beijing", "India":"NewDelhi"]
print(بعض_القواميس.first)

عند تشغيل البرنامج، يتم إصدار الناتج التالي:

Optional((key: "China", value: "Beijing"))

3.count - تعود عدد عناصر القاموس

هذه الخاصية تعود عدد العناصر في القاموس (مفتاح/قيمة).

مثال 10: كيف يعمل العدد؟

let someDictionary = ["Nepal":"Kathmandu", "China":"Beijing", "India":"NewDelhi"]
print(someDictionary.count)

عند تشغيل البرنامج، يتم إصدار الناتج التالي:

3

4. خاصية keys - تعود جميع المفاتيح في القاموس

هذه الخاصية تعود جميع المفاتيح في القاموس.

مثال 11: كيف يعمل keys؟

var someDictionary = ["Nepal":"Kathmandu", "China":"Beijing", "India":"NewDelhi"]
let dictKeys = Array(someDictionary.keys)
print(dictKeys)

عند تشغيل البرنامج، يتم إصدار الناتج التالي:

["China", "India", "Nepal"]

بالمثل، يمكنك أيضًا استخدام  values الخصائص للحصول على جميع القيم في القاموس.

5. removeValue

هذه الوظيفة تستخدم لإزالة القيمة المحددة باستخدام المفتاح المحدد من القاموس ويعود القيمة. ستبدأ هاتان المفتاحين القيم من القاموس.

مثال 12: كيف يعمل removeValue()؟

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القيم. دعونا نرى ذلك في مثال:

مثال 13: يجب أن يكون المفتاح موجودًا

var someDictionary = ["Nepal":"Kathmandu", "China":"Beijing", "India":"NewDelhi"]
let val = someDictionary["Japan"]
print(val)

عند تشغيل البرنامج، يتم إصدار الناتج التالي:

nil

في هذا البرنامج، لا يوجد مفتاح Japan . لذلك، عند محاولة الوصول إلى مفتاح "Japan عندما يتم الوصول إلى ذلك، ستحصل على قيمة nil.

2.بالمثل، يتم التمييز بين الحروف الكبيرة والصغيرة في مفاتيح القيم في Swift، لذا يجب عليك التأكد من استخدام مفاتيح القيم الصحيحة من حيث الحروف الكبيرة والصغيرة. وإلا ستحصل على قيمة nil. دعونا نرى ذلك في مثال:

مثال 14: التمييز بين الحروف الكبيرة والصغيرة في المفاتيح

var someDictionary = ["Nepal":"Kathmandu", "China":"Beijing", "India":"NewDelhi"]
let val = someDictionary["nepal"]
print(val)

عند تشغيل البرنامج، يتم إصدار الناتج التالي:

nil

في هذا البرنامج، لا يوجد مفتاح "nepal". لذلك، عند محاولة الوصول إلى مفتاح "nepal"، ستحصل على قيمة nil.

3.إذا لم تكن قيمة المفتاح المحددة موجودة، هناك طريقة أخرى لتقديم القيمة الافتراضية. دعونا نرى ذلك في المثال:

مثال 12: القيمة الافتراضية عند عدم وجود مفتاح

var someDictionary = ["Nepal":"Kathmandu", "China":"Beijing", "India":"NewDelhi"]
let val  = someDictionary["nepal", default:"Not Found"]
print(val)

عند تشغيل البرنامج، يتم إصدار الناتج التالي:

Not Found

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

في مثالنا، المفتاح“nepal”لا يوجد، لذا يعود البرنامج إلى القيمة الافتراضية: Not Found.