swift - 如何在同一项目中使用其他 swift 文件(同一目标)的函数

标签 swift file

嘿,我有 2 个类,每个类都在自己的 swift 文件中。我这样做基本上只是为了在我的 Viewcontroller 中获得更好的概览。尽管如此,我仍需要访问数据或从我的 View controller.swift 文件中的其他文件调用函数。它在同一个目标中,所以我不需要将它导入我的 View Controller 文件中,对吗?

如果我确实重写了 func viewDidLoad() 我会得到一个异常,所以我想我只能做一次(-> 在我的 viewController.swift 中)

//ViewController.swift

class ViewController: UIViewController{


    @IBOutlet weak var xMotion: UILabel!
    @IBOutlet weak var yMotion: UILabel!
    @IBOutlet weak var zMotion: UILabel!

    @IBOutlet weak var lineChartView: LineChartView!
    @IBOutlet weak var lineChartView2: LineChartView!


override func viewDidLoad() {
    super.viewDidLoad()

       timebuffer.append(Double(ts1))
       colors.append(UIColor.red)

       Graphen.customizeChart(values: buffer1.map { Double($0) })
       Graphen.filteredChart(values: buffer2.map { Double($0) })
       Graphen.multipleCharts()
}

//Graphen.swift

class Graphen : ViewController
{

    //creates Plot with specific numbers/data
    func customizeChart(values: [Double]){
        var dataEntries: [ChartDataEntry] = []
        for i in 0..<buffer1.count{//dataPoints.count
            let dataEntry = ChartDataEntry(x: Double(i), y: values[i])
            dataEntries.append(dataEntry) }
        lineChartDataSet = LineChartDataSet(entries: dataEntries, label: nil)
        lineChartDataSet.circleRadius = 0.5
        let lineChartData = LineChartData(dataSet: lineChartDataSet)
        self.lineChartView.data = lineChartData
    }
}

最佳答案

viewDidLoad()UIViewController 实例生命周期方法。因此,它可以在每个 UIViewCiontroller subclass 中被覆盖,即

class ViewController: UIViewController{
    override func viewDidLoad() {
        super.viewDidLoad()
        //your code here...
    }
}


class Graphen : ViewController
{
    override func viewDidLoad() {
        super.viewDidLoad()
        //your code here...
    }
}

现在,您不需要导入任何文件/类,只要它们在同一个target 中即可。

现在,由于 Graphen 的 customizeChart(values:) 方法是一个实例方法,所以您需要创建一个实例Graphen,然后像这样使用它来调用它的实例方法,

let graphen = Graphen()
graphen.customizeChart(values: buffer1.map { Double($0) })

同样调用Graphen的其他实例方法。假设 filteredChart(values:)multipleCharts() 也是实例方法,您可以这样调用它们,

graphen.filteredChart(values: buffer2.map { Double($0) })
graphen.multipleCharts()

关于swift - 如何在同一项目中使用其他 swift 文件(同一目标)的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56461768/

相关文章:

swift - 使用 SwiftUI 基于用户输入的动态文本字段

c - 文件打开错误处理

c - 使用 fscanf 时无限循环

c - 将 .csv 文件的值传递给结构 vector

python - 以有效的方式将类读写到文件中

python - OSError : [Errno 13] Permission denied while calling os. 删除()

swift - 将数组 Int8 转换为 base64?

swift - NSFetchedResultsController PerformFetch 崩溃(Swift 3)

swift - CAMetalLayer nextDrawable 返回 nil 因为分配失败

swift - Xcode 10.1 ImageRow 问题