使用核心数据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!)