String 在tableview单元格中获取coredata(swift4)

String 在tableview单元格中获取coredata(swift4),string,uitableview,core-data,tableview,fetch,String,Uitableview,Core Data,Tableview,Fetch,下面的代码调用coredata并在标签中打印字符串 @IBOutlet var displayL: UILabel! override func viewDidLoad() { super.viewDidLoad() user = coreDataHandler.getSortedData() for i in user! { displayL.text = String("\(displayL.text ?? "")\nCourse: \(i.usern

下面的代码调用coredata并在标签中打印字符串

@IBOutlet var displayL: UILabel!
override func viewDidLoad() {
    super.viewDidLoad()
    user = coreDataHandler.getSortedData()
    for i in user! {
        displayL.text = String("\(displayL.text ?? "")\nCourse: \(i.username!) Score: \(i.password!)")

    }}
这是可行的,我想把它转移到一个tableview单元格,但我现在所做的不起作用。tableview中甚至没有显示任何内容。我的tableview代码如下。我只想取uitableview单元格,让它为每个单元格显示一个条目

     import UIKit
import CoreData


class allScoresViewController: UIViewController, UITextFieldDelegate, UITableViewDataSource, UITableViewDelegate {


@IBOutlet var tazbleView : UITableView!
var itemsName : [NSManagedObject] = []
var textFieldz : UITextField!

func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    return itemsName.count
}

override func viewDidAppear(_ animated: Bool) {
    super.viewDidAppear(animated)

    let appD = UIApplication.shared.delegate as! AppDelegate

    let context = appD.persistentContainer.viewContext

    let FetchRequest = NSFetchRequest<NSManagedObject>(entityName: "User")


    do {
        itemsName = try context.fetch(FetchRequest)
    }catch {
        print("Ashley Tisdale")
    }
}

func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCellEditingStyle, forRowAt indexPath: IndexPath) {
    if editingStyle == UITableViewCellEditingStyle.delete {
        let appD = UIApplication.shared.delegate as! AppDelegate
        let context = appD.persistentContainer.viewContext
        context.delete(itemsName[indexPath.row])
        itemsName.remove(at: indexPath.row)
        do {
            try context.save()
        }
        catch {
            print("Jessica Alba")
        }
        self.tazbleView.reloadData()


    }
}


func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for : indexPath)

    let user = itemsName[indexPath.row]
    cell.textLabel?.text = ("\nCourse: \(user.username!) Score: \(user.password!)")

    return cell

}
}
导入UIKit
导入CoreData
类allScoresViewController:UIViewController、UITextFieldDelegate、UITableViewDataSource、UITableViewDelegate{
@IBOutlet var tazbleView:UITableView!
var itemsName:[NSManagedObject]=[]
var textFieldz:UITextField!
func tableView(tableView:UITableView,numberofrowsinssection:Int)->Int{
返回itemsName.count
}
覆盖函数视图显示(u动画:Bool){
super.viewdide显示(动画)
将appD=UIApplication.shared.delegate设为!AppDelegate
让context=appD.persistentContainer.viewContext
let FetchRequest=NSFetchRequest(entityName:“用户”)
做{
itemsName=try context.fetch(FetchRequest)
}抓住{
印刷品(“Ashley Tisdale”)
}
}
func tableView(tableView:UITableView,commit editingStyle:UITableViewCellEditingStyle,forRowAt indexPath:indexPath){
如果editingStyle==UITableViewCellEditingStyle.delete{
将appD=UIApplication.shared.delegate设为!AppDelegate
让context=appD.persistentContainer.viewContext
delete(itemsName[indexPath.row])
itemsName.remove(位于:indexPath.row)
做{
尝试context.save()
}
抓住{
印刷品(“杰西卡·阿尔巴”)
}
self.tazbleView.reloadData()
}
}
func tableView(tableView:UITableView,cellForRowAt indexath:indexPath)->UITableViewCell{
let cell=tableView.dequeueReusableCell(带有标识符:“cell”,用于:indexath)
让user=itemsName[indexPath.row]
cell.textLabel?.text=(“\n课程:\(用户.用户名!)分数:\(用户.密码!)”)
返回单元
}
}

我假设,既然您在
视图中获取用户实体,那么这就是您想要使用的,而不是
coreDataHandle.getSortedData()

itemsName
的声明更改为

var itemsName: [User] = []
tableView:cellForRowAt:

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for : indexPath)

    let user = itemsName[indexPath.row] 
    cell.textLabel?.text = ("\nCourse: \(user.username!) Score: \(user.password!)")

    return cell
}
更新

您可能还想更新
viewdide中fetch请求属性的声明

let fetchRequest = NSFetchRequest<User>()
let fetchRequest=NSFetchRequest()

我根据您的上述建议编辑了我的代码。但是,我仍然得到类型为“NSManagedObject”的此错误值没有成员“username”。谢谢您的帮助。您是否将数组itemsName更改为User类型?