我有两个文件: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'
知道为什么吗?它实际上是否可以实现?
答案 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)")
}
}
}