首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在Swift中初始化字典的空数组

在Swift中初始化字典的空数组
EN

Stack Overflow用户
提问于 2014-06-09 09:33:49
回答 5查看 104.1K关注 0票数 83

我正在尝试在Swift中初始化空数组。

对于字符串数组,它非常简单:

代码语言:javascript
复制
var myStringArray: String[] = []
myStringArray += "a"
myStringArray += "b"

-> ["a", "b"]

和整型

代码语言:javascript
复制
var myIntArray: Int[] = []
myIntArray += 1
myIntArray += 2

-> [1, 2]

它也适用于其他类型的对象,如NSImage对象:

代码语言:javascript
复制
let path = "/Library/Application Support/Apple/iChat Icons/Flags/"
let image1 = NSImage(byReferencingFile: path + "Brazil.png")
let image2 = NSImage(byReferencingFile: path + "Chile.png")

var myImageArray: NSImage[] = []
myImageArray += image1
myImageArray += image2

-> [<NSImage 0x7fe371c199f0 ...>, <NSImage 0x7fe371f39ea0 ...>]

然而,我找不出初始化一个空的字典数组的语法。

我知道你可以有一个字典数组,因为用初始值初始化是有效的:

代码语言:javascript
复制
let myDict1 = ["someKey":"someValue"]
let myDict2 = ["anotherKey":"anotherValue"]

var myDictArray = [myDict1]
myDictArray += myDict2

-> [["someKey": "someValue"], ["anotherKey": "anotherValue"]]

然而,这(你期望的语法)失败了:

代码语言:javascript
复制
var myNewDictArray: Dictionary[] = []

出现错误Cannot convert the expression's type 'Dictionary[]' to type 'Hashable'

所以问题是,初始化字典项的空数组的正确方法是什么,为什么这种语法var myNewDictArray: Dictionary[] = []不起作用?

EN

回答 5

Stack Overflow用户

发布于 2014-06-09 10:26:49

这将创建一个空的、不可变的字典:

let dictionary = [ : ]

如果你想要一个可变的:

var dictionary = [ : ]

这两个字典都默认使用Dictionary<String?, AnyObject?>

票数 9
EN

Stack Overflow用户

发布于 2014-06-09 10:05:07

这不起作用的原因是:

代码语言:javascript
复制
var myNewDictArray: Dictionary[] = []

在定义字典时,需要为字典的键和值提供类型。每一行都将创建一个包含字符串键和字符串值的字典的空数组:

代码语言:javascript
复制
var dictArray1: Dictionary<String, String>[] = Dictionary<String, String>[]()
var dictArray2: Dictionary<String, String>[] = []
var dictArray3 = Dictionary<String, String>[]()
票数 6
EN

Stack Overflow用户

发布于 2014-08-25 15:26:39

您不能再使用元素连接。

代码语言:javascript
复制
class Image {}
Image i1
Image i2

var x = [Image]()

x += i1 // will not work (adding an element is ambiguous)
x += [i1] // this will work (concatenate an array to an array with the same elements)

x += [i1, i2] // also good
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24112627

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档