在 Swift 中使用自定义 class 在数组中显示 UIImage
Display UIImage within an array with custom class in Swift
我有一个自定义 class Product 定义为
class Product: NSObject {
var name: String
var priceLabel: String
var productImage: UIImage
init(name: String, priceLabel: String, productImage: UIImage) {
self.name = name
self.priceLabel = priceLabel
self.productImage = productImage
super.init()
}
}
并且我创建了一个带有该自定义的数组 class
let toy = [
Product(name: "Car", priceLabel: ".00"),
Product(name: "Train", priceLabel: ".50")
]
如何将 UIImage 插入该数组?我需要为每个玩具插入不同的图片。
提前致谢
有几种方法可以做到这一点,但使用您的代码只需示例 1 即可:
// Example 1:
let toy = [
Product(name: "Car", priceLabel: ".00", productImage:UIImage(named: "myImage.png")!),
...
]
// Example 2:
let product1 = Product(name: "Car", priceLabel: ".00")
product1.productImage = UIImage(named: "myImage.png")!
let toy = [
product1,
...
]
// Example 3:
let toy = [
Product(name: "Car", priceLabel: ".00"),
...
]
if let prod = toy[0] {
prod.productImage = UIImage(named: "myImage.png")!
}
你只有一个 init 接受 3 个参数,所以如果你这样创建对象:
Product(name: "Car", priceLabel: ".00")
它不会编译,因为你没有只接受两个参数的初始化程序。
试试这个:
let newArray = toy.map{Product(name: [=10=].name, priceLabel: [=10=].priceLabel, productImage:UIImage(named: "myImage.png")!)}
旁注:如果你想让你的初始化程序更动态,请使用默认参数。
init(name: String = "DefaultName", priceLabel: String = "DefaultName", productImage: UIImage = UIImage(named: "DefaultImage")) {
self.name = name
self.priceLabel = priceLabel
self.productImage = productImage
super.init()
}
}
我有一个自定义 class Product 定义为
class Product: NSObject {
var name: String
var priceLabel: String
var productImage: UIImage
init(name: String, priceLabel: String, productImage: UIImage) {
self.name = name
self.priceLabel = priceLabel
self.productImage = productImage
super.init()
}
}
并且我创建了一个带有该自定义的数组 class
let toy = [
Product(name: "Car", priceLabel: ".00"),
Product(name: "Train", priceLabel: ".50")
]
如何将 UIImage 插入该数组?我需要为每个玩具插入不同的图片。
提前致谢
有几种方法可以做到这一点,但使用您的代码只需示例 1 即可:
// Example 1:
let toy = [
Product(name: "Car", priceLabel: ".00", productImage:UIImage(named: "myImage.png")!),
...
]
// Example 2:
let product1 = Product(name: "Car", priceLabel: ".00")
product1.productImage = UIImage(named: "myImage.png")!
let toy = [
product1,
...
]
// Example 3:
let toy = [
Product(name: "Car", priceLabel: ".00"),
...
]
if let prod = toy[0] {
prod.productImage = UIImage(named: "myImage.png")!
}
你只有一个 init 接受 3 个参数,所以如果你这样创建对象:
Product(name: "Car", priceLabel: ".00")
它不会编译,因为你没有只接受两个参数的初始化程序。
试试这个:
let newArray = toy.map{Product(name: [=10=].name, priceLabel: [=10=].priceLabel, productImage:UIImage(named: "myImage.png")!)}
旁注:如果你想让你的初始化程序更动态,请使用默认参数。
init(name: String = "DefaultName", priceLabel: String = "DefaultName", productImage: UIImage = UIImage(named: "DefaultImage")) {
self.name = name
self.priceLabel = priceLabel
self.productImage = productImage
super.init()
}
}