Swift: объявить пустой словарь
Я начинаю учиться swift следуя iBook -The Swift Programming Language на Swift, предоставленном Apple. В книге говорится, что для создания пустого словаря нужно использовать [:] так же, как при объявлении массива как []:
я объявил пустой массив следующим образом:
let emptyArr = [] // or String[]()
но при объявлении пустого словаря, я получаю синтаксическую ошибку:
let emptyDict = [:]
как объявить пустой словарь?
16 ответов:
var emptyDictionary = [String: String]()var populatedDictionary = ["key1": "value1", "key2": "value2"]Примечание: если вы собираетесь изменить содержимое словаря с течением времени, то объявите его как
var(переменная). Ты можете объявить пустой словарь какlet(константа) но это бессмысленно, если у вас есть намерение изменить его содержимое с течением времени, так как константа не может быть изменена после ее инициализации.
ответ:
создать пустой словарь типа
<String, String>будет выглядеть следующим образом:var emptyDictionary = Dictionary<String, String>()
вы не можете использовать
[:]Если информация о типе не доступна.вы должны предоставить ему явно в этом случае:
var dict = Dictionary<String, String>()
varозначает, что он изменчив, так что вы можете добавить записи к нему. И наоборот, если вы сделаете этоletтогда вы не можете далее изменить его (letзначит постоянный).можно использовать
[:]стенографическая запись, если информация о типе может быть выведена, напримерvar dict = ["key": "value"] // stuff dict = [:] // ok, I'm done with itв последнем примере словарь как известно, есть тип
Dictionary<String, String>по первой строке. Обратите внимание, что вам не нужно было указывать его явно, но он был выведен.
The Swift documentation рекомендует следующий способ инициализации пустого словаря:
var emptyDict = [String: String]()Я был немного смущен, когда впервые столкнулся с этим вопросом, потому что разные ответы показывали разные способы инициализации пустого словаря. Оказывается, на самом деле есть много способов сделать это, хотя некоторые из них немного избыточны или слишком многословны, учитывая способность Swift выводить тип.
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>потому что именно так он был инициализирован.
вы должны дать словарь типа
// 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
Я тоже играю с этим. Кажется странным, что вы можете просто объявить пустой словарь, а затем добавить к нему пару ключ / значение следующим образом:
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"
Swift 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]() 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]
вам нужно явно указать тип данных или тип может быть выведен при объявлении чего-либо в Swift.
Swift 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()
вы можете объявить его как ноль со следующим:
var assoc : [String:String]тогда хорошо, что вы уже набрали (обратите внимание, что я использовал var и не позволял, думайте об этом как о изменяемом и неизменяемом). Затем вы можете заполнить его позже:
assoc = ["key1" : "things", "key2" : "stuff"]
Comments