为什么不能在类型“ GetPerson”上使用实例成员“ getPerson”

时间:2019-03-18 00:07:34

标签: swift frameworks

我在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
    }
}

1 个答案:

答案 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是在实际的框架中,还是只是在单独的文件中定义了一个类(应该如此)?