Swift использует пользовательский тип в массиве, но всегда печатает имя типа, а не значение - PullRequest
1 голос
/ 14 июня 2019

У меня есть функция для вызова API. Когда я позвоню назначенному ключу, он даст мне список, который я возьми, чтобы сохранить в моем массиве

var car = [Car]()

Я использую цикл for, чтобы получить значение ключа

for result in fromApiResult.designatedKey {
       self.car.append(Car(carName: result.Name, carType: result.Type))
    }

И я распечатываю машину, похоже, просто наберите

print("\(car)") // [Car,Car]

Это не то, что я хочу, я на самом деле хочу, чтобы это выглядело ниже

Поскольку я буду использовать эти данные для отображения в TableView

var car = [Car(carName:"BMW",carType:"SUV")]

но если я снова использую цикл for, он может получить правильное значение

 for result in car {
   print(result.carName) //"BMW"
 }

Я действительно новичок, теперь хорошо разбираюсь если нужна дополнительная информация, просто спросите меня, спасибо.

1 Ответ

1 голос
/ 14 июня 2019

Рассмотрим приведенный ниже пример, который я нашел ЗДЕСЬ

Сначала вам нужно создать расширение с именем CustomStringConvertible

extension CustomStringConvertible {
    var description: String {
        var description: String = "\(type(of: self))("

        let selfMirror = Mirror(reflecting: self)

        for child in selfMirror.children {
            if let propertyName = child.label {
                description += "\(propertyName): \(child.value), "
            }
        }

        description += "<\(Unmanaged.passUnretained(self as AnyObject).toOpaque())>)"

        return description
    }
}

, затем ваш класс должен подтвердить это расширениекак:

class Person: CustomStringConvertible {
    let name: String
    let age: Int

    init (name: String, age: Int) {
        self.name = name
        self.age = age
    }
}

И теперь вы можете печатать свои объекты в консоли как:

let alex = Person(name: "Alex", age: 20)
print(alex) // Person(name: Alex, age: 20, <0x000060c000058d20>)

Для получения дополнительной информации читайте ЗДЕСЬ .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...