在 Swift 的函数中使用 Struct 作为参数

Use Struct as a parameter in a function in Swift

我有下一个场景

我创建了一个 Swift package 并在 main application 中使用。在这个 Swift Package 中,我想使用一些颜色,因为它是一个 UI package。我的 struct Colors 已经是 defined in my main application,我不想在 package 中再次定义它,所以我试图将我的 struct Colors 发送到 package

我的 struct Colors 里面还有另一个 struct General,比如:

struct Colors {
     struct General {
          static let mainColor = "5F8E3F".toColor
     }
}

这就是我在 package:

中的称呼
func setupContent(withMainStruct mainStruct: Colors) {
    print(mainStruct.General.mainColor)
}

这是我从 main application:

发送的方式
let mainStruct = ColorStruct()
cell.setupContent(withMainStruct: mainStruct)

我的主要问题是:

Static member 'General' cannot be used on instance of type 'Colors'

有什么办法吗?

我只想使用结构的值,不需要更新任何内容。

听起来你想在你的包中定义一个协议,它由你的应用程序中的一个结构来实现。因此,您只需将这些预定义值提供给包即可。

所以像这样。

在应用程序中:

struct AppColors: Colors {
    let general: GeneralColors = General()

    struct General: GeneralColors {
        let mainColor = UIColor.blue
     }
}

configLib(colors: AppColors())

包内

protocol Colors {
    var general: GeneralColors { get }
}

protocol GeneralColors {
    var mainColor: UIColor { get }
}

func configLib(colors: Colors) {
    print(colors.general.mainColor)
}