【问题标题】:Call Function of custom Swift Framework自定义 Swift 框架的调用函数
【发布时间】:2020-02-03 19:23:55
【问题描述】:

我正在尝试创建一个简单的框架,该框架具有一个返回“hello name”名称作为传递参数的函数。下面是试图调用它的框架和代码。

框架:

public class Greeter {
    public init () {}
    public static func greet(name: String) -> String {
        return "Hello /(name)."
    }
}

代码:

import Greeter

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        let greetingString: String = Greeter.greet("Bob")
        print(greetingString)
    }
}

当我尝试输入“greet("Bob")”时,自动完成的是“(name: String) -> String greet(self: Greeter)” .当我手动输入“greet("Bob")”时,我收到错误消息:Instance member 'greet' cannot be used on type 'Greeter';您的意思是改用这种类型的值吗?

【问题讨论】:

    标签: ios swift frameworks


    【解决方案1】:

    你需要先创建一个 Greeter 类的实例,然后调用它的方法。

    let greeter = Greeter()
    let greetingString: String = greeter.greet(name: "Bob")
    print(greetingString)
    

    更新:你不需要: String,这里是多余的。因此,您可以将该行修改为:

    let greetingString = greeter.greet(name: "Bob")
    

    【讨论】:

    • 这行得通,但有没有一种方法可以在不创建类实例的情况下做同样的事情(我已将函数更改为静态)?我正在尝试关注 Kilo Loco 的以下视频 youtube.com/watch?v=GMYxlkOE35k
    • 两者都是正确的。如果您将方法设为静态,那么您只需调用 Greeter.greet()
    • 完美,我刚试过,它们都有效!非常感谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多