z22*_*z22 167 dictionary ios swift
我开始学习swift遵循The Swift Programming LanguageApple提供的iBook- on Swift.该书说要创建一个空字典,应该使用[:]相同的方法,同时将数组声明为[]:
我声明了一个空数组如下:
let emptyArr = [] // or String[]()
Run Code Online (Sandbox Code Playgroud)
但是在声明空字典时,我得到语法错误:
let emptyDict = [:]
Run Code Online (Sandbox Code Playgroud)
如何申报空字典?
dam*_*hec 287
var emptyDictionary = [String: String]()
Run Code Online (Sandbox Code Playgroud)
var populatedDictionary = ["key1": "value1", "key2": "value2"]
Run Code Online (Sandbox Code Playgroud)
注意:如果要随时间更改字典的内容,则将其声明为var(变量).您可以将空字典声明为let(常量),但如果您打算随时间更改其内容,则无意义,因为常量在初始化后无法更改.
老答案:
创建类型的空字典<String, String>将如下所示:
var emptyDictionary = Dictionary<String, String>()
Run Code Online (Sandbox Code Playgroud)
Gab*_*lla 38
[:]除非有类型信息,否则您无法使用.
在这种情况下,您需要明确提供它:
var dict = Dictionary<String, String>()
Run Code Online (Sandbox Code Playgroud)
var意味着它是可变的,所以你可以添加条目.相反,如果你做了一个,let那么你就无法进一步修改它(let意味着不变).
[:]例如,如果可以推断出类型信息,则可以使用简写表示法
var dict = ["key": "value"]
// stuff
dict = [:] // ok, I'm done with it
Run Code Online (Sandbox Code Playgroud)
在最后一个示例中,已知字典具有Dictionary<String, String>第一行的类型.请注意,您不必明确指定它,但已推断出它.
Sur*_*gch 27
在斯威夫特文件建议通过以下方式来初始化一个空的字典:
var emptyDict = [String: String]()
Run Code Online (Sandbox Code Playgroud)
当我第一次遇到这个问题时,我有点困惑,因为不同的答案显示了初始化空字典的不同方法.事实证明,实际上有很多方法可以做到这一点,尽管有些方法有点多余或过于冗长,因为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>()
Run Code Online (Sandbox Code Playgroud)
有了一个空字典后,你可以像这样添加一个键值对:
emptyDict["some key"] = "some value"
Run Code Online (Sandbox Code Playgroud)
如果要再次清空字典,可以执行以下操作:
emptyDict = [:]
Run Code Online (Sandbox Code Playgroud)
类型仍然<String, String>是因为它是如何初始化的.
Jio*_*Jio 15
您可以简单地声明它:
var emptyDict:NSMutableDictionary = [:]
Run Code Online (Sandbox Code Playgroud)
你必须给字典一个类型
// empty dict with Ints as keys and Strings as values
var namesOfIntegers = Dictionary<Int, String>()
Run Code Online (Sandbox Code Playgroud)
如果编译器可以推断出类型,则可以使用较短的语法
namesOfIntegers[16] = "sixteen"
// namesOfIntegers now contains 1 key-value pair
namesOfIntegers = [:]
// namesOfIntegers is once again an empty dictionary of type Int, String
Run Code Online (Sandbox Code Playgroud)
var stringDict: [String: String] = [String: String]()
Run Code Online (Sandbox Code Playgroud)
或者
var stringDict: Dictionary<String, String> = Dictionary<String, String>()
Run Code Online (Sandbox Code Playgroud)
var stringDict: [String: Int] = [String: Int]()
Run Code Online (Sandbox Code Playgroud)
或者
var stringDict: Dictionary<String, Int> = Dictionary<String, Int>()
Run Code Online (Sandbox Code Playgroud)
var stringDict: [String: AnyObject] = [String: AnyObject]()
Run Code Online (Sandbox Code Playgroud)
或者
var stringDict: Dictionary<String, AnyObject> = Dictionary<String, AnyObject>()
Run Code Online (Sandbox Code Playgroud)
var stringDict: [String: [String]] = [String: [String]]()
Run Code Online (Sandbox Code Playgroud)
或者
var stringDict: Dictionary<String, Array<String>> = Dictionary<String, Array<String>>()
Run Code Online (Sandbox Code Playgroud)
var stringDict: [[String: String]] = [[String: String]]()
Run Code Online (Sandbox Code Playgroud)
或者
var stringDict: Array<Dictionary<String, String>> = Array<Dictionary<String, String>>()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
179596 次 |
| 最近记录: |