У меня есть структура, которая состоит из некоторых элементов, которые находятся в String
, Bool
и Int
, давайте назовем это Struct A
.У меня также есть другая структура, позволяющая назвать ее Struct B
.
Struct A{
let name: String
let surname: String
let age: Int
}
Struct B{
let columnId: Int
let value: String
}
У меня есть массив B, и я хочу присвоить значения A для B. Пример массива;
FirstElement (columnId: 1, значение: "name = myname") SecondElement (columnId: 2, значение: "surname = mysurname") ThirdElement (columnId: 3, значение: "age = 20")
Я могу получить все свойства структуры с расширением ниже;
extension Loopable {
func allProperties() throws -> [String: Any] {
var result: [String: Any] = [:]
let mirror = Mirror(reflecting: self)
// Optional check to make sure we're iterating over a struct or class
guard let style = mirror.displayStyle, style == .struct || style == .class else {
throw NSError()
}
for (property, value) in mirror.children {
guard let property = property else {
continue
}
result[property] = value
}
return result
}
}
После того, как я получу все свойства, мне понадобится какая-то итерация; Мой вопрос заключается в том, как получить значение и ключ, например строку «значение = ключ», расположенную ниже «classA [i]»
func setArray(){
let classA = classA().getAllProperties()
for i in 0..<deviceLogs.count{
myArray.append(B(columnId: i, value: classA[i]) )
}
}
РЕДАКТИРОВАТЬ: Iхотите получить все свойства со значениями внутри Struct A и использовать его в качестве String для значения свойства при создании объекта Struct B.