在结构中创建变量并访问同一结构中的变量

Posted

技术标签:

【中文标题】在结构中创建变量并访问同一结构中的变量【英文标题】:create a variable in a struct and access the variable in the same struct 【发布时间】:2021-12-18 08:54:45 【问题描述】:

我正在尝试将自定义字体添加到 swift 项目中,并且对 Swift 的结构有疑问。由于我要制作不同大小的自定义字体,并且我需要多次使用字符串(“我的自定义字体”),我想为字符串创建一个变量但得到错误。

struct Fonts 

    let myFont = "My custom font"
    let myFontBold = "My custom font bold"

    static let customFontNormal = UIFont(name: self.myFont, size: 16.0)
    static let customFontBold = UIFont(name: self.myFontBold, size: 16.0)

我收到此错误消息

不能在属性初始化器中使用实例成员“myFont”;属性初始化程序在 'self' 可用之前运行。

我想调用 Fonts.customFontNormal 之类的字体或类似的字体,但有没有办法制作字符串变量并允许从同一结构中的变量访问值?

【问题讨论】:

为什么你会使用static 来处理其中的一些,而不是全部?无关,类型是enum Font,而不是struct Fonts。但是为什么要创建一个类型而不是扩展 UIFont 谢谢你,杰西。抱歉,我仍然是 Swift 的初学者,我只是按照 Sean Allen 的视频制作了自定义 UI。 youtu.be/C4f7R2gUO8E?t=279 在视频中,他只为结构体做了一个字体标题,但这是我的误解。 【参考方案1】:

感谢 Jessy,我扩展了 UIFont 并为 sting 添加了一个新结构。

struct Fonts 

    static let myFont = "myFont"
    static let myFontBold = "myFontBold"



extension UIFont 

    static func myFontNormal() -> UIFont 
        return UIFont(name: Fonts.myFont, size: 16)!
    

    static func myFontBoldNormal() -> UIFont 
        return UIFont(name: Fonts.myFontBold, size: 16)!
    

非常感谢!

【讨论】:

以上是关于在结构中创建变量并访问同一结构中的变量的主要内容,如果未能解决你的问题,请参考以下文章

无法访问 Kohana 控制器中的会话变量

如何将页面中声明的变量访问到内部类?

JVM升级篇六(JVM内存模型)

在函数中创建类并访问在包含函数范围内定义的函数

按名称访问结构变量

如何在 Python 中使用 loadmat 访问从 .mat 文件导入的结构中的字段?