sort array alphabetically ios arrays class swift instantiation

ios - array - swift 4 sorted



¿Cómo declarar correctamente la matriz de objetos personalizados en Swift? (4)

Aquí está mi clase personalizada ... no estoy seguro si me falta algo ...

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 } }

Estoy tratando de instanciar aquí ...

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

No incluí el resto de la clase ViewController, porque no pensé que fuera necesario.

El error se produce cuando intento asignar un valor a foundation [0] .Brand

¡Aprecio su ayuda de antemano!


Necesita instanciar su objeto de clase

ejemplo:

var arrayName:Array<yourclassname> = Array() print("/(yourclaseename[0].name)")


Primero crea una clase personalizada ...

var foundation = baseMakeUp(Brand: "Some Brand", Color: "Red")

El uso puede usar esta clase en viewcontroller por las siguientes líneas

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 } }


Primero, voy a asumir que no querías arreglos en 2D. Si lo hiciste, contestaré tu pregunta desde esa perspectiva a continuación.

var foundation = [baseMakeUp]()

Crea una matriz vacía de baseMakeUp llamada fundación. No puede usar subíndices para agregar elementos a una matriz, solo puede usarlo para cambiar elementos existentes. Como la matriz está vacía, agregue elementos al agregar.

foundation.append(baseMakeUp(Brand: "Brand", Color: "Color"))

Ya que no tiene un inicializador baseMakeUp que le permita pasar una calificación, la calificación de ese elemento es 0. Sin embargo, como la agregó a su matriz, ahora puede usar suscripciones para cambiar su variable de clasificación de esta manera:

foundation[0].Rating = 3

Si es la intención de 2d matrices.

var foundation = [[baseMakeUp]]()

Para crear la matriz

foundation.append([]) foundation[0].append(baseMakeUp(Brand: "Brand", Color: "Color")) foundation[0][0].Rating = 3

La primera línea agrega una matriz vacía a su matriz de nivel superior. La segunda línea agrega un baseMakeUp a la matriz agregada en la primera línea. La tercera línea usa subíndices para cambiar la Clasificación del primer elemento en la primera matriz de su matriz 2d.

Esperemos que eso ayude con su problema.

Adicionalmente

Iba a agregar los puntos 1 y 2 de la respuesta de jday001 aquí, pero también deberías revisar su respuesta.

Editar

Acabo de darme cuenta de que está intentando agregar elementos a sus arreglos en el ámbito incorrecto.

Tendrás que mover tu

foundation.append(baseMakeUp(Brand: "Brand", Color: "Color")

dentro de una función y llámelo usted mismo o colóquelos dentro de algo como viewDidLoad

p.ej:

class ViewController: UIViewController, UITableViewDataSource, UITableViewDelegate { var foundation = [baseMakeUp]() override func viewDidLoad() { super.viewDidLoad() foundation.append(baseMakeUp(Brand: "Brand", Color: "Color") foundation[0].Rating = 3 } }

Esperemos que sea útil.


Usted tiene algunas cosas que suceden aquí:

  1. Te faltan algunas convenciones de nomenclatura. Los nombres de clase deben estar en mayúsculas ( baseMakeUp debe ser BaseMakeUp ).
  2. Las variables de clase deben estar en minúsculas ( image , brand , color , rating ). También brand y color en el método init.
  3. ¿Pretendes que tu matriz de foundation sea ​​multidimensional? Si solo quieres una matriz regular, iría con algo como:

    var foundation = [BaseMakeup]?

  4. Como dice la otra respuesta, también necesita crear una instancia de los objetos de BaseMakeup usando su método init:

    let aBaseMakeup = BaseMakeup(brand: "Revlon", color: "Red")

  5. Después de eso, puedes agregar objetos BaseMakeup a tu matriz de esta manera:

    foundation?.append(aBaseMakeup)

Con suerte, estoy entendiendo lo que estás tratando de lograr.