gpt4 book ai didi

swift - 初学者 Swift - 无法将 UILabel.text 更改为对象中的存储属性

转载 作者:行者123 更新时间:2023-11-28 08:11:49 25 4
gpt4 key购买 nike

非常基本的问题,感谢您的帮助

尝试通过引用对象 (jName) 中的存储属性来更改 UILabel 的文本,以便您将来可以更改/添加更多名称/标签,而不仅仅是显式声明 firstName.text = "Joe Bloggs"

不明白为什么它不允许我将文本更改为 jName 的存储属性?我尝试初始化属性,但这也无济于事。任何人都知道构建它的最佳方式吗?

class ViewController: UIViewController {


@IBOutlet var firstName: UILabel!
@IBOutlet var thirdName: UILabel!

struct jName {

var fName: String = "Joe"
var lName: String = "Blogs"

init(fName: String, lName: String) {
self.fName = fName
self.lName = lName
}
}

override func viewDidLoad() {
super.viewDidLoad()

assignLabels()

}

override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}

func assignLabels() {

firstName.text = jName.fName
thirdName.text = jName.lName

}
}

最佳答案

首先,由于您使用的是结构,因此已经有一个内置构造函数,因此如果您不在其上放置自定义代码,则代码中的这一部分是不必要的:

init(fName: String, lName: String) {
self.fName = fName
self.lName = lName
}

它不会让您更改文本,因为您没有初始化结构并且您正在尝试直接访问它的属性。您应该在使用其属性之前实例化该结构:

func assignLabels() {
let jNameStruct = jName(fName: "Joe", lName: "Blogs")
firstName.text = jNameStruct.fName
thirdName.text = jNameStruct.lName

}

另一种选择是在变量中使用 static 修饰符,这样您就可以直接访问存储的属性:

struct jName {

static var fName: String = "Joe"
static var lName: String = "Blogs"

init(fName: String, lName: String) {
self.fName = fName
self.lName = lName
}
}

关于swift - 初学者 Swift - 无法将 UILabel.text 更改为对象中的存储属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43568093/

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