Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 获得;无关参数标签;尝试将数组附加到Swift中的其他数组时_Arrays_Swift_Compiler Errors_Append - Fatal编程技术网

Arrays 获得;无关参数标签;尝试将数组附加到Swift中的其他数组时

Arrays 获得;无关参数标签;尝试将数组附加到Swift中的其他数组时,arrays,swift,compiler-errors,append,Arrays,Swift,Compiler Errors,Append,我在调用中得到了无关的参数标签“contentsOf:” array.append(contentsOf:test)尝试在中运行此代码时出错: import Cocoa var array:[Any] = [] let test = [""] array.append(contentsOf: [""]) array.append(contentsOf: test) 为什么会这样?据我所知,有两个相等的空字符串数组。要回答您在评论中的具体问题,在这种情况下,您只需在Swift知道您知道的情况下

我在调用中得到了
无关的参数标签“contentsOf:”
array.append(contentsOf:test)
尝试在中运行此代码时出错:

import Cocoa

var array:[Any] = []
let test = [""]
array.append(contentsOf: [""])
array.append(contentsOf: test)

为什么会这样?据我所知,有两个相等的空字符串数组。

要回答您在评论中的具体问题,在这种情况下,您只需在Swift知道您知道的情况下进行转换即可。在这种情况下,由于
SKShapeNode
向下转换到
SKNode
很好,因此您可以使用
作为
进行转换。如果您正在执行可能失败的强制转换,则需要使用
as?
并安全地展开以确保安全

var allNodes: [SKNode] = []
let onlyShapeNodes: [SKShapeNode] = []

allNodes.append(contentsOf: onlyShapeNodes as [SKNode])
对于原始的通用示例,这同样适用

var array: [Any] = []
let test = ["", ""]

array.append(contentsOf: [""] as [Any])
array.append(contentsOf: test as [Any])

只需将test声明为
let test:[Any]=[“”]
,它就会停止抱怨。另一个选项是更改数组类型
var数组:[String]=[]
Compare
test
(其类型为
[String]
)必须先转换为
[Any]
,然后才能追加。此过程要求将每个组成的
字符串
装箱到协议见证表中。由于这是一个
O(n)
操作,编译器最好不要在没有通知您正在进行这种转换的情况下默默地执行此操作。检查数组中是否有任何打字错误或大小写不敏感变量。我理解。我错误地认为,由于SKShapeNode是从SKNode继承而来的,因此我可以轻松地将SKShapeNode数组添加到SKNodes数组中,而无需任何“as”用法。尤其令我困惑的是,我仍然可以编写类似于
array.append(SKShapeNode())
,其中
array
[SKNode]
,并且添加一个没有错误的SKShapeNode。在某些情况下,编译器可以推断出您试图执行的操作,例如
array.append(SKShapeNode())
因为类型是显式的,所以其他人不能这样做。数字也经常出现这种情况
1+5.0
可以工作,但如果将它们放入变量中并执行
valueInt+valueDouble
,它会变得疯狂。因为类型是在那个时候保存的。无论如何,这很奇怪。看看我原来的问题代码。现在我不明白另一件事了。如果我们需要将
test
强制转换为
[Any]
,为什么不需要将
[“”]
强制转换为
Any
,如下所示:
array.append(contentsOf:[“”]as[Any])
?我在你的回答中看到了这一点。但是在第一种情况下,一切都可以正常工作,没有任何代码,换句话说:append
test
-error。将
测试附加为[任何]
-确定。但是追加
[“”]
-ok,并将
[“”]作为[Any]
追加也是可以的…因为类似于将
SKShapeNode()
直接放入其中,如果直接传入,则可以推断
[“”]
的类型。