gpt4 book ai didi

ios - 使用 Extensions 将 Swift 类传播到多个文件

转载 作者:塔克拉玛干 更新时间:2023-11-02 09:39:38 25 4
gpt4 key购买 nike

我正在 Swift 中构建一个大型类,我想将其分布在多个文件中,因为它变得太大而无法有效地在其中工作。它不能被子类化,因为它只是一个具有许多功能的类。 (我可能以后可以优化它并删除双重代码,但我仍然想实现这一点。)

为了使工作更容易,我想使用扩展将类分散到多个 Swift 文件中。我已经部分实现了;通过在同一文件中创建扩展来扩展基类。这没有任何问题。

假设基础文件是 BaseClass.Swift(和类 BaseClass),我想将它扩展到 BaseClassExtension.swift ,我将以下内容放入 BaseClassExtension.swift:

extension BaseClass {
func doStuff() -> String {
return myVariable
}
}

BaseClass.swift 中,我有 private var myVariable = "I am a string",但在 BaseClassExtension.swift 中,我得到以下内容错误:使用未解析的标识符“myVariable”

我试过以下方法:

  • 公开扩展
  • 公开基类
  • 将两者都公开
  • (默认情况下它们都是默认的(我猜是内部的?))

当我从 myVariable 中删除 private 时,错误就解决了,但我真的希望它是私有(private)的,因为它可能永远不会从类外部直接访问。

最佳答案

您必须在与您的类相同的文件中进行扩展,因为 private 的范围仅限于此文件。

但是你可以这样做:

private(set) myVariable: String

因此可以从您的扩展程序访问 getter,但(至少)setter 在此范围内保持隐藏。

关于ios - 使用 Extensions 将 Swift 类传播到多个文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33811299/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com