使用核心数据swift ios将实体的所有属性获取到tableview中的行中的标签

Posted

技术标签:

【中文标题】使用核心数据swift ios将实体的所有属性获取到tableview中的行中的标签【英文标题】:Get all attributes of an entity to a label in row in tableview with core data swift ios 【发布时间】:2017-12-17 12:13:10 【问题描述】:

我已经为名为@9​​87654327@ 的实体定义了两个属性名称和描述,我想在表格视图的一行中检索第一个标签中的名称和第二个标签中的描述

我做了什么

我现在检索到的东西

我希望将这些所有值打印在每个单元格中,而不是每次都重复单个单元格

        let context = appDel.persistentContainer.viewContext
let results = try! context.fetch(request)

for result in results as! [NSManagedObject] 

    let formNameIs = result.value(forKey: "formName") as? String
    let formDescIs = result.value(forKey: "formDesc") as? String

cell.titleLabel.text = formNameIs!
cell.descLabel.text = formDescIs
    print(formNameIs!, formDescIs!)


【问题讨论】:

显示您的代码。 @pbasdf 更新代码 【参考方案1】:

您似乎误解了 tableView 的工作原理。您不需要遍历所有对象;您应该为该行找到正确的对象(如 indexPath 参数中所示),并使用该对象的属性值设置标签。

所以,让results 数组成为视图控制器的属性:

var results : [NSManagedObject] = []

viewDidLoad 中,从CoreData 填充您的results 数组:

...
// presumably you have code to define the fetch request
let context = appDel.persistentContainer.viewContext
results = try! context.fetch(request)

在tableView的numberOfRowsInSection方法中,返回results中对象的个数

return results.count

并且在 tableView 的 cellForRowAt: 方法中,使用 indexPath 参数从 results 数组中找到正确的对象:

let result = results[indexPath.row]
let formNameIs = result.value(forKey: "formName") as? String
let formDescIs = result.value(forKey: "formDesc") as? String
cell.titleLabel.text = formNameIs!
cell.descLabel.text = formDescIs
print(formNameIs!, formDescIs!)

【讨论】:

你会回答这个***.com/questions/47881304/…

以上是关于使用核心数据swift ios将实体的所有属性获取到tableview中的行中的标签的主要内容,如果未能解决你的问题,请参考以下文章

Swift 从实体(核心数据)获取特定的 NSManagedObject

iOS (Swift):使用关系获取核心数据

如何使用神奇的 Records Library Swift 获取属性中的所有值

根据 Swift Core Data 中的关系获取与特定实体相关的所有条目

如何在 IOS Swift 中获取核心数据中的多对多关系?

iOS:核心数据获取