![](/img/trans.png)
[英]What is the difference between “ as string” and “stringvalue” in swift?
[英]What is the difference between [[String:String]]! and [[String:String]]() in Swift
我正在做一个项目,在那里我找到了一个数组变量
var items: [[String: String]]!
我在谷歌搜索如何定义一个空数组,我得到的结果是
var itemsNew: [[String: String]]()
在附加数据时使用项目数组时出错
self.appDelegate.items.append([Name: "sdsd",
rate: "0.2",
Quantity:"3",
Taxable:"true",
Category: "",
inven: "true",
amount : "0.23",
mod: "",
darray: "",
list: "",
famount: "0.0"])
给出错误“致命错误:在隐式展开可选值时意外发现 nil:文件”。 我给出了核心价值,但它仍然在崩溃。 不知道为什么会崩溃。 有人可以帮助我吗?
因为
var items: [[String: String]]! not allocating memory or giving back, the reference to item where developer can append the items.
所以var itemsNew: [[String: String]]()
正在工作,因为它正在创建 memory ,您可以在其中 append 项目。
第一个 object items
被声明为隐式展开的可选项。 如果您将其items
没有?
可选地展开,你是说你肯定知道items
中有一个值,如果它没有我希望应用程序崩溃的值,我敢肯定它不是nil
。
在第二种情况下,您正在创建一个non-optional
空字典itemsNew
数组,它不能为nil
,但在声明时为空。 总之,您可以将可选声明替换为空声明,它们仍然会在这些属性中存储相同的类型。
var items = [[String: String]]()
var itemsNew = [[String: String]]()
[[String: String]]()
是[[String: String]]
类型数组的 object 。
其中[[String: String]]!
是一个[[String: String]]
类型的数组类型,在执行时不能为 nil,因为它是一个隐式展开的可选项。
您收到Fatal error: Unexpectedly found nil while implicitly unwrapping an Optional value: file
,因为items
从未初始化。 但是您正在尝试将项目添加到实际上是 null 值的items
中。 您可以通过使用以下代码替换items
声明来解决此错误。
var items: [[String: String]] = [[String: String]]()
而且 itemsNew 的声明也是错误的。 您可以如下声明它。
var itemsNew = [[String: String]]()
或者
var itemsNew: [[String: String]] = [[String: String]]()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.