首页 > 解决方案 > 如何将单个类记录中的所有属性值显示到 TableView 中

问题描述

我有一类动物,我需要用几十个属性来构建它们。目前,动物列表显示在 TableView 中,当被触摸时,我想转到一个新的 ViewController,它将有一个 TableView 列出所有属性(并且可以编辑)。似乎我需要将所有属性放入一个数组中,以便我可以使用它来提供表格视图。但我不知道该怎么做,除了手动进入并按照以下方式制作一些东西:animalArray.append(“animal.animalsTypeName”,“animal.animalsTypeNotes”,“animal.animalsTypeID”....等对于该类最终将具有的所有属性。

有没有更简单的方法来做到这一点?

extension AnimalsType {

@nonobjc public class func fetchRequest() -> NSFetchRequest<AnimalsType> {
    return NSFetchRequest<AnimalsType>(entityName: "AnimalsType")
}

@NSManaged public var animalsTypeName: String?
@NSManaged public var animalsTypeNotes: String?
@NSManaged public var animalsTypeID: UUID?
@NSManaged public var animalTypetoCore: NSSet?

}

标签: iosuitableview

解决方案


试试这个,你可以把它作为一个函数放在 AnimalType 对象本身里面,或者稍微修改一下,放在类外面,改变reflecting: self以反映 AnimalsType 对象的实例

public func getAsAnArray() -> [AnimalsType] {
     var resultArray        = [String]()
     let mirroredAnimalType = Mirror(reflecting: self)
     for (_, attr) in mirroredAnimalType.children.enumerated() {
        if let value = attr.value {
           if value.isEmpty {
                break
           }
              
           resultArray.append(value)
           // if you want a dictionary instead you can run
           // resultDictionary[attr.label!] = value
           // instead of resultArray.append(value)
        }
     }
     return resultArray
}

如果您选择将函数放在类中,您可以像这样使用它 -

let array = animalsType.getAsAnArray()

如果我没有分解它,请原谅我,我稍后会回来并在我有时间时解释如果需要


推荐阅读