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

我已经定义了两个属性名称和描述到一个名为Forms的实体,我想检索第一个标签中的名称和desc在第二个标签中的一行tableview

我所做的

在这里输入图像说明

我可以检索的东西

在这里输入图像说明

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

在这里输入图像说明

  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!) } 

看起来你错误地理解了tableViews是如何工作的。 你不需要遍历所有的对象; 您应该find该行的正确对象(如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数组中find正确的对象:

 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!)