स्विफ्ट: एक खाली शब्दकोश घोषित करें


178

मैं Apple द्वारा प्रदान की गई Swift पर swiftiBook- का अनुसरण करके सीखना शुरू कर रहा हूं The Swift Programming Language। पुस्तक खाली शब्द बनाने के लिए कहती है कि किसी को [:]सरणी घोषित करते समय उसी का उपयोग करना चाहिए []:

मैंने एक खाली सरणी की घोषणा इस प्रकार की:

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

लेकिन खाली शब्दकोश की घोषणा करने पर, मुझे सिंटैक्स त्रुटि मिलती है:

let emptyDict = [:]

मैं एक खाली शब्दकोश कैसे घोषित करूं?


2
अजीब है, मुझे ऐसा करने में कोई त्रुटि नहीं है, मैं गिनती के लिए भी पूछ सकता हूं और खेल का मैदान मुझे देता है 0.
कां डीडोग्लू

मेरा कोई भी संकलक त्रुटि रनटाइम से नहीं दे सकता है मैं स्थिरांक का एक प्रिंट प्राप्त कर सकता हूं और वे इसे कंसोल array :() dictionary :{}प्रिंट स्टेटमेंट में प्रिंट करते हैं let arr = [] let dict = [:] println("array :\(arr)") println("dictionary :\(dict)")
nsuinteger


जवाबों:


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कि मैंने आपको सुझाव दिया था: developer.apple.com/library/prerelease/ios/documentation/Swift/…
damirstuhec

1
@ Damir179 की पहली लाइन सादे गलत है। वहाँ कोई प्रकार की जानकारी नहीं है इसलिए आपको स्पष्ट होना चाहिए, अन्यथा आप एक अनुपयोगी उदाहरण प्रस्तुत करेंगे __NSDictionaryI। इसमें एक तत्व जोड़ने का प्रयास करें emptyDictऔर यह संकलन समय पर विफल हो जाएगा।
गैब्रियल पेट्रोनेला

1
var vacDict: NSMutableDictionary = [:]
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] = [:]
ताना के

धन्यवाद!। शब्दकोश <स्ट्रिंग, स्ट्रिंग> () ने मेरी समस्या को ठीक कर दिया, मैंने वास्तव में Enum से MyClass को एक शब्दकोष दिया था। "प्रकार की जानकारी उपलब्ध है" से आपका क्या तात्पर्य है?
एडुआर्डो रीस

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]()। उसका कुछ मतलब है।
एचबीएन

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>()

AnyObject का शब्दकोश

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]

फिर अच्छी बात यह है कि आप पहले से ही टाइपसेट हैं (ध्यान दें कि मैंने var का उपयोग किया है और ऐसा नहीं होने दिया है, इनको परस्पर और अपरिवर्तनीय समझें)। फिर आप इसे बाद में भर सकते हैं:

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 तानाशाही = स्ट्रिंग: स्विफ्ट में शब्दकोश के लिए स्ट्रिंग


-2

अपना रास्ता खोजने के लिए यह बहुत आसान है

var तानाशाह: शब्दकोश = [:]


आपको कुंजी और मूल्य प्रकारों का भी उपयोग करना होगा।
सुरगाछ

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.