ios - 如何将单个类记录中的所有属性值显示到 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?
}
解决方案
试试这个,你可以把它作为一个函数放在 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()
如果我没有分解它,请原谅我,我稍后会回来并在我有时间时解释如果需要
推荐阅读
- react-native - React Native 仅加载自定义字体一次
- elixir - 如何更新 Ecto/Phoenix 中的现有数据?
- exception - 如何在迭代链深处引发错误而不将整个事情变成嵌套的for循环?
- php - 无法将数据从 react-native 应用程序发布到 mySQL
- php - 是否可以从最新created_at 的数据库中删除数据?
- java-8 - c3p0 的连接超时问题
- php - 设置DIV时如何获取值?
- cordova - 无法在应用浏览器中打开 watsapp 、Gmail On cordova 的共享链接
- html - 如何获取 mat-table 的实例?
- .net - 如何自动将数据从多访问数据库迁移到单个 sql server 数据库?