我在操场上浓缩了我的问题场景:

@objc protocol Prot {}
class Cla : Prot {}

var myArray: [ (aString: String, prot: [Prot] ) ] = []
var myProts: [Prot]? = [Cla()]

// error: type 'T' does not conform to protocol 'IntegerLiteralConvertible'
myArray.append(aString: "myname", prot: myProts!)

// works
myArray.append(aString: "myname", prot: myProts! as [Prot])

// works
if let myProts: [Prot] = myProts {
    myArray.append(aString: "myname", prot: myProts)
}

为什么在这里不接受强制拆包?

Xcode 6.1.1

最佳答案

只是编译器感到困惑-试试这个:

let tuple = (aString: "myname", prot: myProts!)
myArray.append(tuple)

由于某些原因,在某些情况下,当传递给函数/方法时,它无法检测到元组。而且,经常发生的错误消息并没有太大帮助。

关于ios - 为什么我不能以这种方式在[[String,[ProtocolType])]中插入(String,[ProtocolConformer])元组?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28118076/

10-12 23:12