我在Cocoa框架中编写代码,并从主项目中调用该函数。但是它总是返回一条消息失败。我有两种解决方法。
首先,在主项目viewController中:
import getPerson
override func viewDidLoad() {
super.viewDidLoad()
var person = GetPersons.getPerson(name: "Jack")
}
返回:
实例成员'getPerson'不能用于'GetPerson'类型;您是不是要使用这种类型的值
第二:
import getPerson
override func viewDidLoad() {
super.viewDidLoad()
let vc = GetPersons.self
var person = vc.getPerson(name: "Jack")
}
返回:
实例成员'getPerson'不能用于'GetPersons'类型
这是怎么回事?我该如何解决?
在测试框架中:
import Fundation
public class GetPersons {
public struct Person {
public var name : String = ""
public var age : Int = 0
}
public func getPerson(name : String) -> Person {
var person = Person()
return person
}
}
答案 0 :(得分:0)
在第一个示例中,它告诉您已将getPerson(name:String)定义为实例方法。 (大概是因为它在实例属性上运行。)
您在这里调用它的方式就像定义为:
static func getPerson(name: String) { ...
第二个是说同样的话,而没有猜测你想做什么。
如果我了解您想要做什么,我会认为它像这样:
class GetPersons {
struct Person {
public var name : String = ""
public var age : Int = 0
}
func getPerson(name : String) -> Person {
var person = Person()
return person
}
}
然后,在视图控制器中为GetPersons实例定义一个属性:
let gp = GetPersons()
然后在viewDidLoad中
let person = gp.getPerson(name: "Jack")
还有,GetPersons是在实际的框架中,还是只是在单独的文件中定义了一个类(应该如此)?