[英]How to Properly Declare Array of Custom Objects in Swift?
這是我的自定義類...不確定我是否缺少任何內容...
import UIKit
class baseMakeUp {
var Image = UIImage()
var Brand: String
var Color: String
var Rating: Int = 0
init (Brand: String, Color: String) {
self.Brand = Brand
self.Color = Color
}
}
我正在嘗試在此處實例化...
import UIKit
class ViewController: UIViewController, UITableViewDataSource, UITableViewDelegate {
required init(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
let cellIdentifier = "cellIdentifier"
var foundation: [[baseMakeUp]]
var blush: [[baseMakeUp]]
var eyes: [[baseMakeUp]]
var lips: [[baseMakeUp]]
var nails: [[baseMakeUp]]
// put some test data in makeup arrays here...
foundation[0].Brand = "Revlon" -------------> "Expected declaration" error.
foundation[0].Color = "Red"
foundation[0].Rating = 3
foundation[1].Brand = "MAC"
foundation[1].Color = "Blue"
foundation[1].Rating = 4
我沒有包括ViewController類的其余部分,因為我認為沒有必要。
當我嘗試為Foundation [0]分配值時發生錯誤。
提前感謝您的幫助!
首先,我假設您不想要2D數組。 如果您這樣做了,我將從下面的角度回答您的問題。
var foundation = [baseMakeUp]()
創建一個空的baseMakeUp數組,稱為Foundation。 您不能使用下標將元素添加到數組,只能使用它來更改現有元素。 由於數組為空,因此需要添加帶有append的元素。
foundation.append(baseMakeUp(Brand: "Brand", Color: "Color"))
由於您沒有baseMakeUp初始化程序,該初始化程序可讓您傳遞該元素的等級為0的等級。但是,由於將其附加到數組后,現在可以使用下標來更改它的Rating變量,如下所示:
foundation[0].Rating = 3
如果您確實打算使用2D陣列。
var foundation = [[baseMakeUp]]()
創建數組
foundation.append([])
foundation[0].append(baseMakeUp(Brand: "Brand", Color: "Color"))
foundation[0][0].Rating = 3
第一行將一個空數組追加到頂級數組。 第二行將baseMakeUp追加到第一行中添加的數組。 第三行使用下標更改2d數組的第一個數組中第一個元素的評級。
希望這可以幫助您解決問題。
另外
我打算在這里從jday001s答案中添加點1和2,但是您也應該查看它們的答案。
編輯
我只是意識到您正在嘗試在錯誤的范圍內將元素添加到數組中。
您必須移動您的
foundation.append(baseMakeUp(Brand: "Brand", Color: "Color")
在函數內部並自己調用,或將其放在諸如viewDidLoad之類的內部
例如:
class ViewController: UIViewController, UITableViewDataSource, UITableViewDelegate {
var foundation = [baseMakeUp]()
override func viewDidLoad() {
super.viewDidLoad()
foundation.append(baseMakeUp(Brand: "Brand", Color: "Color")
foundation[0].Rating = 3
}
}
希望這會有所幫助。
您在這里發生了一些事情:
baseMakeUp
應為BaseMakeUp
)。 image
, brand
, color
, rating
)。 以及init方法中的brand
和color
。 您打算使foundation
陣列具有多維性嗎? 如果您只想使用常規數組,則可以使用以下方法:
var foundation = [BaseMakeup]?
正如另一個答案所說,您還需要使用init方法實例化BaseMakeup對象:
let aBaseMakeup = BaseMakeup(brand: "Revlon", color: "Red")
之后,您可以像下面這樣將BaseMakeup對象添加到您的數組中:
foundation?.append(aBaseMakeup)
希望我了解您正在努力實現的目標。
首先創建一個自定義類...
import Foundation
class ClassName{
var id: Int?
var name: String?
var category_name: String?
var price: Double?
init(json: JSON) {
self.id = json["id"].int
self.name = json["name"].string
self.category_name = json["category_name"].string
self.price = json["price"].double
}
}
使用可以通過以下幾行在viewcontroller中使用該類
var arrayName:Array<yourclassname> = Array()
print("/(yourclaseename[0].name)")
您需要實例化您的類對象
例:
var foundation = baseMakeUp(Brand: "Some Brand", Color: "Red")
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.