Voici mon cours personnalisé ... je ne suis pas sûr qu'il me manque quelque chose ...
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
}
}
J'essaye d'instancier ici ...
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
Je n'ai pas inclus le reste de la classe ViewController, car je ne pensais pas que c'était nécessaire.
L'erreur se produit lorsque j'essaie d'attribuer une valeur à la fondation [0] .Brand
Appréciez votre aide d'avance!
Premièrement, je vais supposer que vous ne vouliez pas de tableaux 2D. Si tel est le cas, je répondrai à votre question sous cet angle.
var foundation = [baseMakeUp]()
Crée un tableau vide de baseMakeUp appelé fondation. Vous ne pouvez pas utiliser les indices pour ajouter des éléments à un tableau, vous pouvez uniquement l'utiliser pour modifier des éléments existants. Puisque votre tableau est vide, vous ajoutez des éléments avec append.
foundation.append(baseMakeUp(Brand: "Brand", Color: "Color"))
Comme vous n'avez pas d'initialiseur baseMakeUp qui vous permette de passer une note, la note de cet élément est 0. Cependant, puisque vous l'avez ajouté à votre tableau, vous pouvez maintenant utiliser l'indice pour changer sa variable Rating comme ceci:
foundation[0].Rating = 3
Si vous aviez l'intention de créer des tableaux 2D.
var foundation = [[baseMakeUp]]()
Pour créer le tableau
foundation.append([])
foundation[0].append(baseMakeUp(Brand: "Brand", Color: "Color"))
foundation[0][0].Rating = 3
La première ligne ajoute un tableau vide à votre tableau de niveau supérieur. La deuxième ligne ajoute un baseMakeUp au tableau ajouté à la première ligne. La troisième ligne utilise l’indice subscript pour modifier l’évaluation du premier élément du premier tableau de votre tableau 2D.
Espérons que cela aide avec votre problème.
De plus
J'allais ajouter les points 1 et 2 de la réponse de jday001, mais vous devriez également consulter leur réponse.
Éditer
Je viens de me rendre compte que vous essayez d'ajouter des éléments à vos tableaux dans le mauvais périmètre.
Vous devrez déplacer votre
foundation.append(baseMakeUp(Brand: "Brand", Color: "Color")
dans une fonction et appelez-la vous-même ou placez-la à l'intérieur de quelque chose comme viewDidLoad
par exemple:
class ViewController: UIViewController, UITableViewDataSource, UITableViewDelegate {
var foundation = [baseMakeUp]()
override func viewDidLoad() {
super.viewDidLoad()
foundation.append(baseMakeUp(Brand: "Brand", Color: "Color")
foundation[0].Rating = 3
}
}
J'espère que c'est utile.
Vous avez quelques choses qui se passent ici:
baseMakeUp
devrait être BaseMakeUp
).image
, brand
, color
, rating
). Aussi brand
& color
dans la méthode init.Voulez-vous que votre tableau foundation
soit multidimensionnel? Si vous voulez juste un tableau régulier, je choisirais quelque chose comme:
var foundation = [BaseMakeup]?
Comme le dit l'autre réponse, vous devez également instancier des objets BaseMakeup à l'aide de votre méthode init:
let aBaseMakeup = BaseMakeup(brand: "Revlon", color: "Red")
Après cela, vous pouvez ajouter des objets BaseMakeup à votre tableau comme ceci:
foundation?.append(aBaseMakeup)
J'espère comprendre ce que vous essayez d'accomplir.
Créez d'abord une classe personnalisée ...
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
}
}
Use peut utiliser cette classe dans viewcontroller en suivant les lignes
var arrayName:Array<yourclassname> = Array()
print("/(yourclaseename[0].name)")
Vous devez instancier votre objet de classe
exemple:
var foundation = baseMakeUp(Brand: "Some Brand", Color: "Red")