【问题标题】:Why can't I insert a (String, [ProtocolConformer]) tuple in my [( String, [ProtocolType] )] this way?为什么我不能以这种方式在我的 [( String, [ProtocolType] )] 中插入 (String, [ProtocolConformer]) 元组?
【发布时间】:2015-01-23 20:19:19
【问题描述】:

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

@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

【问题讨论】:

    标签: ios swift tuples xcode6.1 forced-unwrapping


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 2019-05-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-30
      相关资源
      最近更新 更多