gpt4 book ai didi

ios - 在 Swift 类中初始化 AnyObject 属性?

转载 作者:行者123 更新时间:2023-11-30 14:06:49 27 4
gpt4 key购买 nike

好吧,我正在尝试创建一个用 Swift 编程语言创建项目符号点的类。但是,我无法弄清楚如何初始化项目符号点的样式。

初始化项目符号点对象后,我希望能够选择项目符号点的样式是否为导入的图像,在这种情况下,该属性将符合 UIImageView 或(默认情况下)项目符号点的样式将成为自动递增的数值并符合UILabel

例如,我希望类的结构如下所示:

class bullet {

var bulletStyle: AnyObject

init() {
bulletStyle = UILabel()
}

init(styleImage style:UIImageView) {
bulletStyle = style
}
}

但是在测试该类之后,在以两种方式初始化该类后,bulletStyle 仍然采用 AnyObject 类型。那么如何在初始化时将 bulletStyle 设置为 UILabel 对象或 UIImageView 对象呢?

最佳答案

我建议使用协议(protocol)。您创建一个协议(protocol) BulletStyle,并创建 2 个实现该协议(protocol)的类。下面是一个代码示例。

protocol BulletStyle {

var bulletText: String? { get set}

var bulletImage: UIImage? { get set}

}

class Bullet {

var bulletStyle: BulletStyle

init() {
bulletStyle = BulletLabel()
}

init(styleImage style:BulletImageView) {
bulletStyle = style
}
}

class BulletLabel: UILabel, BulletStyle {

var bulletText: String? {
get {
return self.text
}
set {
self.text = newValue
}
}

var bulletImage: UIImage? {
get {
return nil
}
set {
// nothing to set
}
}

}

class BulletImageView: UIImageView, BulletStyle {

var bulletText: String? {
get {
return nil // no text for an image
}
set {
// nothing to set for an image
}
}

var bulletImage: UIImage? {
get {
return self.image
}
set {
self.image = newValue
}
}

}


class YourApp {

var myBullets : [BulletStyle]?

func createBullets() {
myBullets = [BulletLabel(), BulletLabel(), BulletImageView()]
myBullets![0].bulletText = "bulletA"
myBullets![1].bulletText = "bulletB"
myBullets![2].bulletImage = UIImage(named: "myBulletImageA")
}

}

关于ios - 在 Swift 类中初始化 AnyObject 属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32277603/

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