گروه مقاله : ios
تاريخ انتشار : 1396/04/22 - 11:18
كد :7703

چگونه در سویفت از دیکشنری استفاده کنیم

در این مقاله به معرفی مجموعه دیکشنری در سویفت میپردازیم.

چگونه در سویفت از دیکشنری استفاده کنیم

 

آموزش برنامه نویسی IOS

 

تعریف چند متغیر مقدار دهی شده در مجموعه دیکشنری

اگر میخواهید مجموعه ای داشته باشید که هر یک از رشته های موجود در آن به یک عدد صحیح متصل است میتوانید از مجموعه دیکشنری استفاده کنید.

در مجموعه دیکشنری یک داده از نوع String به داده ای از نوع Int متصل است. برای تعریف یک دیکشنری به این صورت عمل می کنیم [String:Int] به مثال زیر نگاه کنید:

var dictionary: [String:Int] = [

    "one" : 1,

    "two" : 2,

    "three" : 3

]

 

افزودن مقدار در دیکشنری

داده ها از نوع دیکشنری به این صورت معرفی میشوند Dictionary<Key, Value> در این عبارت Key نوعی مقدار است که در دیکشنری میتواند بصورت کلید استفاده شود. عبارت Value مقادیری است که در دیکشنری برای کلید ها ذخیره میگردد.

کلید در دیکشنری از پروتکل Hashable استفاده می کند . در آموزش کارایی مجموعه ی ست در سویفت چیست این پروتکل را توضیح داده ایم.

ایجاد یک دیکشنری تهی

هنگام تعریف یک دیکشنری تهی همچنان لازم است که نوع آن را تعریف کنیم:

  1. var namesOfIntegers = [Int: String]()
  2. // namesOfIntegers is an empty [Int: String] dictionary

 

اگر شما به یک متغییر یک دیکشنری از نوع [Int: String] بدهید و بعد به آن مقدار تهی بدهید نوع متغیر همچنان با نوع دیکشنری یکی خواهد بود. به مثال زیر نگاه کنید:

  1. namesOfIntegers[16] = "sixteen"
  2. // namesOfIntegers now contains 1 key-value pair
  3. namesOfIntegers = [:]
  4. // namesOfIntegers is once again an empty dictionary of type [Int: String]

تعریف مقدار در یک دیکشنری

شما میتوانید مقادیر درون یک دیکشنری را با "،" از هم جدا کنید به مثال زیر نگاه کنید.

  •  [key 1: value 1, key 2: value 2, key 3: value 3]

 

مثال زیر به انواع پرواز ها را در یک دیکشنری یک مقدار میدهد، در این مثال هر رشته به یک رشته مرتبط است . به این صورت که از یک رشته سه حرفی به نام یک پرواز مرتبط گشته است:

  1. var airports: [String: String] = ["YYZ": "Toronto Pearson", "DUB": "Dublin"]

در مثال بالا دیکشنری airports از نوع [String: String] است. این بدین معنا است که کلید های این دیکشنری بصورت رشته ای میباشند و مقادیر هر کلید هم بصورت رشته میباشد.

اگر بخواهیم میتوانیم بدون تعریف نوع دیکشنری به آن مقدار بدهیم، در هر دو حالت ما تنها اجازه داریم یک نوع داده در متغییر قرار دهیم ، به مثال زیر نگاه کنید:

var airports = ["YYZ": "Toronto Pearson", "DUB": "Dublin"]

در مثال بالا سویفت به دیکشنری airports نوع  [String: String] را خواهد داد.

دسترسی به محتوا و تغییر محتوای یک دیکشنری

برای خواندن تعداد عناصر یک دیکشنری از ویژگی count استفاده کنید . به این مثال نگاه کنید:

  1. print("The airports dictionary contains \(airports.count) items.")
  2. // Prints "The airports dictionary contains 2 items."

از ویژگی isEmpty برای مشخص کردن خالی بودن یا خالی نبودن یک دیکشنری استفاده کنید:

  1. if airports.isEmpty {
  2. print("The airports dictionary is empty.")
  3. } else {
  4. print("The airports dictionary is not empty.")
  5. }
  6. // Prints "The airports dictionary is not empty."

برای افزودن یک آیتم جدید به دیکشنری،  باید یک کلید را به یک مقدار نسبت دهید به مثال زیر نگاه کنید :

  1. airports["LHR"] = "London"
  2. // the airports dictionary now contains 3 items

از همین روش برای تغییر مقدار یک کلید میتوانید استفاده کنید:

  1. airports["LHR"] = "London Heathrow"
  2. // the value for "LHR" has been changed to "London Heathrow"

 

ویرایش مقدار یک کلید در دیکشنری

بجای تکنیک بالا می توانید از دستور updateValue(_:forKey:) برای ویرایش مقدار یک کلید استفاده کنید، این دستور میتواند مانند دستور بالا در صورت عدم وجود کلید آن را ایجاد کند و در صورت وجود کلید مقدار آن را ویرایش کند.

در مثال زیر ما یک متغییر به نام oldValue ایجاد کردیم :   

  1. if let oldValue = airports.updateValue("Dublin Airport", forKey: "DUB") {
  2. print("The old value for DUB was \(oldValue).")
  3. }
  4. // Prints "The old value for DUB was Dublin."

این مثال کلید DUB مقدار Dublin را دریافت کرده است . حالا اگر این کلید وجود  نداشته باشد آنرا ایجاد و مقدار دهی می کند و اگر وجود داشته باشد. آنرا مقدار دهی یا ویرایش می کند.

شما میتوانید مقدار یک کلید را در درج نکنید. در این حالت اگر کلید مقدار داشت مقدار ارجاع داده میشود و اگرکلید مقدار نداشته باشد، مقدار nil ارجاع داده میشود.

  1. if let airportName = airports["DUB"] {
  2. print("The name of the airport is \(airportName).")
  3. } else {
  4. print("That airport is not in the airports dictionary.")
  5. }
  6. // Prints "The name of the airport is Dublin Airport."

برای تهی کردن مقدار کلید از دستور زیر استفاده کنید:

  1. airports["APL"] = "Apple International"
  2. // "Apple International" is not the real airport for APL, so delete it
  3. airports["APL"] = nil
  4. // APL has now been removed from the dictionary

حذف کردن مقدار یک کلید

برای حذف مقدار یک کلید میتوانید بجای دستور بالا از دستور زیر استفاده کنید removeValue(forKey:) این دستور مقدار یک کلید را در صورت وجود حذف می کند. این متغییر مقدار حذف شده و یا مقدار nil را بازمیگرداند:

  1. if let removedValue = airports.removeValue(forKey: "DUB") {
  2. print("The removed airport's name is \(removedValue).")
  3. } else {
  4. print("The airports dictionary does not contain a value for DUB.")
  5. }
  6. // Prints "The removed airport's name is Dublin Airport."

نمایش اطلاعات دیکشنری

برای اینکه اطلاعات یک دیکشنری را به نمایش بگذارید، میتوانید از یک حلقه for in  استفاده کنید، در این حلقه شما میتوانید اطلاعات دیکشنری را بصورت (key, value) فراخوانی کنید. به مثال زیر نگاه کنید:

  1. for (airportCode, airportName) in airports {
  2. print("\(airportCode): \(airportName)")
  3. }
  4. // YYZ: Toronto Pearson
  5. // LHR: London Heathrow

شما میتوانید کلید و یا مقدار دیکشنری را بطور جداگانه فراخوانی کنید:

  1. for airportCode in airports.keys {
  2. print("Airport code: \(airportCode)")
  3. }
  4. // Airport code: YYZ
  5. // Airport code: LHR
  6.  
  7. for airportName in airports.values {
  8. print("Airport name: \(airportName)")
  9. }
  10. // Airport name: Toronto Pearson
  11. // Airport name: London Heathrow

اگر شما باید از یک کلید و یا مقدار دیکشنری در یک نرم افزار استفاده کنید که مقادیر را بصورت آرایه نمایش میدهد میتوانید کلید و یا مقدار کلید را با دستور زیر نیز فراخوانی کنید:

  1. let airportCodes = [String](airports.keys)
  2. // airportCodes is ["YYZ", "LHR"]
  3.  
  4. let airportNames = [String](airports.values)
  5. // airportNames is ["Toronto Pearson", "London Heathrow"]

دیکشنری ها اطلاعات را بصورت مرتب ارائه نمیدهند. اگر میخواهید از اطلاعات دیکشنری ها بصورت مرتب استفاده کنید از متد sorted() برای کلید ها و مقادیر استفاده کنید.توضیح روش استفاده از storted را در مقاله کارایی مجموعه ی ست در سویفت چیست مطالعه نمایید.

برای برنامه نویسی ios برای تولید نرم افزار های کاربردی و تخصصی با شرکت برنامه نویسی سارگون تماس بگیرید.

نظرات كاربران :