【问题标题】:Xcode crash trying to add an array as 'value' to dictionary (using playground file)Xcode 崩溃尝试将数组作为“值”添加到字典(使用游乐场文件)
【发布时间】:2014-06-04 15:20:15
【问题描述】:

经过多次实验和多次崩溃,我还是想不通:

var dictionary:Dictionary<String, Any> = ["A": "Val A"]

var array = ["A", "B"]

dictionary["Ar"] = /* Xcode crash as soon as I type 'a' 
                      and autocomplete brings up my 'array' */

我尝试了许多不同的方法,包括添加一个空数组(部分可行),但只要我向该数组添加一些内容,Xcode 就会崩溃。

Apple 确实提到“Swift 数组是特定于它们可以存储的值的种类。”,但这不应该冲突。 “任何”类型仍然是一种类型。当然,编译器警告是人们所期望的,但话说回来,这个测试版。

【问题讨论】:

  • 它发生在 Playground 中吗?
  • 可能是 Xcode 错误。您应该在 Apple 开发者论坛上发布相关信息。
  • 我现在看到了,发生了同样的事情。
  • 这发生在操场上。已向 Apple 提交错误报告。这对我来说似乎是一件大事,考虑到我没有找到关于这个的帖子,我想我错过了一些东西。
  • 只有当数组是变量时才会发生崩溃。 let array = ["A", "B"] 不会让 Xcode 崩溃

标签: swift


【解决方案1】:

我认为这与数组和字典的安全性有关

此代码有效:

var dictionary:Dictionary<String, Array<String>> = ["A": []]

var array = ["A", "B"]


dictionary["Ar"] = array

但这会崩溃:

var dictionary:Dictionary<String, Any> = ["A": []]

var array: String[] = ["A", "B"]


dictionary["Ar"] = array

我可以确认这个错误也发生在我身上,所以我认为这排除了数组不能包含在字典中的可能性。

【讨论】:

  • 是的。然而,最大的问题是 Swift 的 Dictionary 将如何取代“id”友好的 NSDictionary。意思是,在同一个实例中存储一个“对象”、字符串、整数、实例等。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-12-25
相关资源
最近更新 更多