在类中的结构内调用函数

时间:2014-10-07 21:03:14

标签: ios swift

我有两个文件:ClassA.swift和ClassB.swift

class ClassA: NSObject {
    struct StructA {
        func talk(string: String) {
            println("I say: \(string)")
        }
    }
}


class ClassB: NSObject {
    func makeItTalk(string: String) {
        ClassA.StructA.talk("Hello") <--------------
    }
}

我收到以下错误消息

  

类型'ClassA.StructA'不符合协议'StringLiteralConvertible'

知道为什么吗?它实际上是否可以实现?

3 个答案:

答案 0 :(得分:2)

您正在静态上下文中访问StructA,而您需要一个实例:

class ClassB: NSObject {
    func makeItTalk(string: String) {
        var myStruct = ClassA.StructA()
        myStruct.talk("Hello")
    }
}

或者,如果您的目标是静态访问该方法,只需将其声明为静态结构方法:

static func talk(string: String) {
    println("I say: \(string)")
}

答案 1 :(得分:1)

尝试更改func talk(string: String)
static func talk(string: String)

答案 2 :(得分:1)

您正在使用talk作为static方法,但它被声明为实例方法。改为:

class ClassA: NSObject {
    struct StructA {
        static func talk(string: String) {
            println("I say: \(string)")
        }
    }
}