সুইফট: একটি খালি অভিধান ঘোষণা করুন


178

আমি অ্যাপল দ্বারা সরবরাহিত swiftআইবুক অনুসরণ করে শিখতে শুরু করছি The Swift Programming Language। বইতে বলা হয়েছে একটি ফাঁকা অভিধান তৈরি করতে [:]যেমন অ্যারে ঘোষণা করার সময় একই ব্যবহার করা উচিত []:

আমি নিম্নলিখিত হিসাবে একটি খালি অ্যারে ঘোষণা করেছি:

let emptyArr = [] // or String[]()

তবে খালি অভিধান ঘোষণা করার সময় আমি সিনট্যাক্স ত্রুটি পেয়েছি:

let emptyDict = [:]

আমি কীভাবে একটি খালি অভিধান ঘোষণা করব?


2
অদ্ভুত, আমি এই কাজ কোন ভুল পান, আমি গণনা জন্য অনুরোধ করতে পারেন এবং খেলার মাঠ আমাকে 0. দেয়
Kaan Dedeoglu

আমার রানটাইম থেকে কোনও সংকলক ত্রুটি দেয় না আমি array :() dictionary :{}let arr = [] let dict = [:] println("array :\(arr)") println("dictionary :\(dict)")
কনস্ট্যান্টগুলির একটি মুদ্রণও


উত্তর:


310
var emptyDictionary = [String: String]()

­

var populatedDictionary = ["key1": "value1", "key2": "value2"]

দ্রষ্টব্য : আপনি যদি সময়ের সাথে সাথে অভিধানের বিষয়বস্তুগুলি পরিবর্তন করতে চলেছেন তবে এটি var(পরিবর্তনশীল) হিসাবে ঘোষণা করুন । আপনি করতে পারেন হিসেবে একটি খালি অভিধান ডিক্লেয়ার let(ধ্রুব) কিন্তু এটা, যদি আপনি সময়ের সাথে এটির সামগ্রীগুলি পরিবর্তনের উদ্দেশ্য আছে অর্থহীন পর এটি সক্রিয়া করা হয়েছে ধ্রুবক পরিবর্তন করা যাবে না যেহেতু।


পুরানো উত্তর :

টাইপের একটি খালি অভিধান তৈরি করা <String, String>দেখতে নীচে দেখতে পাবেন:

var emptyDictionary = Dictionary<String, String>()

ধন্যবাদ সাথী, এটি কাজ করে। তবে কেন আমি যদি ধ্রুবক হিসাবে কোনও অ্যারে ঘোষণা করতে পারি তবে আমি কেন অভিধানটিকে ধ্রুবক হিসাবে ঘোষণা করতে পারি না?
z22

2
নিশ্চয়ই আপনি কোনও কনস্টিটিশন ডিকশনারি ঘোষণা করতে এবং এটিকে খালি করতে পারছেন না? আপনি কখনই এর সাথে মান যুক্ত করতে পারবেন না?
CW0007007

1
আপনি একটি ধ্রুবক হিসাবে খালি অ্যারে ঘোষণা করতে পারেন তবে এটি অর্থহীন। আপনি যদি দস্তাবেজগুলি পড়েন তবে দেখতে পাবেন যে varআমি আপনাকে পরামর্শ দিয়েছিলাম তেমন একটি অ্যারে সর্বদা ঘোষণা করা হয়: বিকাশকারী
অ্যাপ্লিকেশন

1
@ দামির 179 প্রথম লাইনটি সম্পূর্ণ ভুল। তাই আপনি স্পষ্ট হতে হবে এমন কোন প্রকার তথ্য আছে, অন্যথায় আপনি একজন অব্যবহারযোগ্য উদাহরণস্বরূপ উত্পাদন করা হবে __NSDictionaryI। এতে একটি উপাদান যুক্ত করার চেষ্টা করুন emptyDictএবং এটি সংকলনের সময় ব্যর্থ হবে।
গ্যাব্রিয়েল পেট্রোনেলা

1
var খালি ডিক্ট: এনএস পরিবর্তনযোগ্য অভিধান = [:]
Jio

39

[:]প্রকারের তথ্য উপলব্ধ না হলে আপনি ব্যবহার করতে পারবেন না ।

এই ক্ষেত্রে আপনাকে এটি স্পষ্টভাবে সরবরাহ করতে হবে:

var dict = Dictionary<String, String>()

varএর অর্থ এটি পরিবর্তনীয়, যাতে আপনি এটিতে এন্ট্রি যুক্ত করতে পারেন। বিপরীতে, আপনি যদি এটি তৈরি করেন letতবে আপনি এটিকে আর সংশোধন করতে পারবেন না ( letযার অর্থ ধ্রুবক)।

[:]উদাহরণস্বরূপ, টাইপ তথ্যটি অনুমান করা যায় যদি আপনি শর্টহ্যান্ড স্বরলিপি ব্যবহার করতে পারেন

var dict = ["key": "value"]

// stuff

dict = [:] // ok, I'm done with it

শেষ উদাহরণে অভিধানটি Dictionary<String, String>প্রথম লাইনের দ্বারা টাইপ রয়েছে বলে জানা যায় । নোট করুন যে আপনাকে এটি স্পষ্টভাবে নির্দিষ্ট করতে হবে না, তবে এটি অনুমান করা হয়েছে।


var dict: [String: String] = [:]
সুইফটে

ধন্যবাদ!. অভিধান <স্ট্রিং, স্ট্রিং> () আমার সমস্যার সমাধান করেছে, আমার আসলে এনাম থেকে মাই ক্লাসে একটি অভিধান ছিল। "প্রকারের তথ্য উপলভ্য" বলতে কী বোঝায়?
এডুয়ার্ডো রেইস

32

সুইফট ডকুমেন্টেশন নিম্নলিখিত পদ্ধতিতে একটি খালি অভিধান আরম্ভ করতে পরামর্শ দেওয়া হচ্ছে:

var emptyDict = [String: String]()

আমি যখন প্রথম এই প্রশ্নটি পেলাম তখন আমি কিছুটা বিভ্রান্ত হয়ে পড়েছিলাম কারণ বিভিন্ন উত্তর খালি অভিধানটি শুরু করার বিভিন্ন উপায় দেখায়। দেখা যাচ্ছে যে আপনি এটি করতে পারেন এমন অনেকগুলি উপায় রয়েছে, যদিও কিছুটি সুইডের প্রকারটি নির্ধারণের ক্ষমতা দেওয়ার কারণে কিছুটা অযথা বা অত্যধিক ভারবস হয়।

var emptyDict = [String: String]()
var emptyDict = Dictionary<String, String>()
var emptyDict: [String: String] = [:]
var emptyDict: [String: String] = [String: String]()
var emptyDict: [String: String] = Dictionary<String, String>()
var emptyDict: Dictionary = [String: String]()
var emptyDict: Dictionary = Dictionary<String, String>()
var emptyDict: Dictionary<String, String> = [:]
var emptyDict: Dictionary<String, String> = [String: String]()
var emptyDict: Dictionary<String, String> = Dictionary<String, String>()

আপনার খালি অভিধান থাকার পরে আপনি এর মতো কী-মান জুটি যুক্ত করতে পারেন:

emptyDict["some key"] = "some value"

আপনি যদি আবার আপনার অভিধানটি খালি করতে চান তবে আপনি নিম্নলিখিতগুলি করতে পারেন:

emptyDict = [:]

প্রকারগুলি এখনও রয়েছে <String, String>কারণ এটি কীভাবে এটি আরম্ভ করা হয়েছিল।


যদি আপনি একটি খালি অভিধানের একটি অ্যারে শুরু করতে চান, আপনি এটি যেমনটি করতে চাই: var emptyDictArray = [[String: String]()] var emptyDictArray = [Dictionary<String, String>()]
ডন আলেজান্দ্রো

19

এটি কাজ করবে ব্যবহার করুন।

var emptyDict = [String: String]()

আমি এই এক পছন্দ। কারণ আমরা একটি খালি অ্যারে ঘোষণা করতে পারি var emtpyAry = [String]()। যে বুদ্ধিমান।
hbin

16

আপনি কেবল এটির মতো ঘোষণা করতে পারেন:

var emptyDict:NSMutableDictionary = [:]

6

আপনাকে অভিধানটি এক ধরণের দিতে হবে

// empty dict with Ints as keys and Strings as values
var namesOfIntegers = Dictionary<Int, String>()

যদি সংকলক প্রকারটি অনুমান করতে পারে তবে আপনি সংক্ষিপ্ত বাক্য গঠন ব্যবহার করতে পারেন

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


4

আমিও এ নিয়ে খেলছি। এটি আশ্চর্যজনক বলে মনে হয় যে আপনি কেবল একটি খালি অভিধান ঘোষণা করতে পারেন এবং তারপরে এটিতে একটি কী / মান জুটি যুক্ত করতে পারেন:

var emptyDictionary = Dictionary<String, Float>()
var flexDictionary = [:]
emptyDictionary["brian"] = 4.5
flexDictionary["key"] = "value" // ERROR : cannot assign to the result of this expression

তবে আপনি এমন একটি অভিধান তৈরি করতে পারেন যা এই জাতীয় "যে কোনও" প্রকারটি ব্যবহার করে বিভিন্ন মান ধরণের গ্রহণ করে:

var emptyDictionary = Dictionary<String, Any>()
emptyDictionary["brian"] = 4.5
emptyDictionary["mike"] = "hello"

4

আপনি সুইফটে কোনও কিছু ঘোষণা করার সময় আপনাকে স্পষ্টভাবে ডেটা টাইপ বলতে হবে বা টাইপটি অনুমান করা যেতে পারে।

সুইফট 3

নীচের নমুনাগুলি একটি Intপ্রকার হিসাবে কী এবং একটি ধরণের মান হিসাবে একটি অভিধান ঘোষণা করে String

পদ্ধতি 1: প্রারম্ভক

let dic = Dictionary<Int, String>()

পদ্ধতি 2: শর্টহ্যান্ড সিনট্যাক্স

let dic = [Int:String]()

পদ্ধতি 3: অভিধান আক্ষরিক

var dic = [1: "Sample"]
// dic has NOT to be a constant
dic.removeAll()

4

সুইফট 4

let dicc = NSDictionary()

//MARK: - This is empty dictionary
let dic = ["":""]

//MARK:- This is variable dic means if you want to put variable 
let dic2 = ["":"", "":"", "":""]

//MARK:- Variable example
let dic3 = ["name":"Shakeel Ahmed", "imageurl":"https://abc?abc.abc/etc", "address":"Rawalpindi Pakistan"]

//MARK: - This is 2nd Variable Example dictionary
let dic4 = ["name": variablename, "city": variablecity, "zip": variablezip]

//MARK:- Dictionary String with Any Object
var dic5a = [String: String]()
//MARK:- Put values in dic
var dic5a = ["key1": "value", "key2":"value2", "key3":"value3"]

var dic5b = [String:AnyObject]()
dic5b = ["name": fullname, "imageurl": imgurl, "language": imgurl] as [String : AnyObject]

or
//MARK:- Dictionary String with Any Object
let dic5 = ["name": fullname, "imageurl": imgurl, "language": imgurl] as [String : AnyObject]

//MARK:- More Easy Way
let dic6a = NSDictionary()
let dic6b = NSMutalbeDictionary()

3

আপনি যদি কোনও প্রকারের সাথে জেনেরিক অভিধান তৈরি করতে চান

var dictionaryData = [AnyHashable:Any]()

ধন্যবাদ, অবশেষে কারণ এটি কেবল স্ট্রিং নয় বরং অভিধানের টাইপ যুক্ত করার প্রয়োজন
মিচেল কারি


3

সুইফটে ডিকোরিয়ানস ঘোষণা ও সূচনা

স্ট্রিংয়ের অভিধান

var stringDict: [String: String] = [String: String]()

অথবা

var stringDict: Dictionary<String, String> = Dictionary<String, String>()

ইন্টার এর অভিধান

var stringDict: [String: Int] = [String: Int]()

অথবা

var stringDict: Dictionary<String, Int> = Dictionary<String, Int>()

যেকোনওজেক্টের অভিধান

var stringDict: [String: AnyObject] = [String: AnyObject]()

অথবা

var stringDict: Dictionary<String, AnyObject> = Dictionary<String, AnyObject>()

স্ট্রিংয়ের অ্যারের অভিধান

var stringDict: [String: [String]] = [String: [String]]()

অথবা

var stringDict: Dictionary<String, Array<String>> = Dictionary<String, Array<String>>()

স্ট্রিংয়ের ডিকোরিটিস অ্যারে

var stringDict: [[String: String]] = [[String: String]]()

অথবা

var stringDict: Array<Dictionary<String, String>> = Array<Dictionary<String, String>>()

0

আপনি নিম্নলিখিত হিসাবে এটি শূন্য হিসাবে ঘোষণা করতে পারেন:

var assoc : [String:String]

তারপরে খুব ভাল বিষয় হ'ল আপনি ইতিমধ্যে টাইপসেট করেছেন (নোটিশটি আমি ভেরি ব্যবহার করেছি এবং না দেওয়া, এগুলিকে পরিবর্তনীয় এবং অপরিবর্তনীয় হিসাবে ভাবেন) think তারপরে আপনি এটি পরে পূরণ করতে পারেন:

assoc = ["key1" : "things", "key2" : "stuff"]

0

আপনি নিম্নলিখিত কোড ব্যবহার করতে পারেন:

var d1 = Dictionary<Int, Int>()
var d2 = [Int: Int]()
var d3: Dictionary<Int, Int> = [Int : Int]()
var d4: [Int : Int] = [:]

-1

var dictList = স্ট্রিং: সুইফটে অভিধানের জন্য স্ট্রিং var arrSicationTitle = সুইফটে অ্যারের জন্য স্ট্রিং


-2

এটি আপনার উপায় সন্ধানের জন্য খুব সুবিধাজনক

ভ্যার ডিক্ট: অভিধান = [:]


আপনাকে কী এবং মান প্রকারগুলিও ব্যবহার করতে হবে।
সুরগাচ

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.