'AnyObject'没有名为xxx的成员

时间:2015-06-16 21:03:22

标签: swift

有一种接收'AnyObject'数组的方法。然后在基于某些条件的方法内部将AnyObject强制转换为特定对象。到目前为止没有问题。将AnyObject转换为特定对象后,如果我尝试访问它的属性,则会抛出错误。我理解错误即将发生的原因。但是有没有其他方法可以在任何其他逻辑中获得相同的。这是代码。

func downloadImage(#list: Array<AnyObject>, forControler: String) {
    var xxxList: Array<AnyObject>

    if forControler == "A" {
        xxxList = list as! Array<A>
    } else if forControler == "B" {
        xxxList = list as! Array<B>
    } else {
        xxxList = list as! Array<C>
    }

    for (index, url) in enumerate(xxxList)  {
        url.A
    }
}

错误引发url.A

由于

1 个答案:

答案 0 :(得分:0)

您的代码中有多个错误。

首先,当在Swift中声明一个var(这里是xxxList)时,你必须在之后初始化它。否则,需要将此var标记为可选。

你得到编译器的错误是&#34; dumb&#34;。它不知道包装到数组中的对象的实际类型是什么。它只能看到AnyObject个对象,它们没有任何A字段或属性。在迭代之前,您必须将列表转换为所需的类型。

您的代码应该是这样的:

func downloadImage(#list: [AnyObject], forController: String) {
    if forController == "A" {
        var aList = list as! [A]
        // for loop iterating over A objects
    } else if forController == "B" {
        var bList = list as! [B]
        // for loop iterating over B objects
    } else {
        var cList = list as! [C]
        // for loop iterating over C objects
    }
}

您必须为每种类型定义一个循环。好吧,你也可以定义一个循环并执行转换(将if语句移动到该循环中)。