使用核心数据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中的行中的标签的主要内容,如果未能解决你的问题,请参考以下文章

iOS:核心数据获取

iOS:检查值是不是与核心数据中实体的任何属性匹配?

核心数据可转换属性(NSArray)为空

核心数据:获取特定对象的多对多关系中的所有实体?

Core Data 可以在 iOS 上延迟获取 BLOB 属性吗?

IOS:通过一对多关系获取核心数据