CoreData:为Swift 3

时间:2016-12-05 10:14:56

标签: swift core-data segue nsmanagedobject prepare

我是Swift 3的初学者,目前正在学习CoreData。我正在尝试做一个应用程序,我有一个第一个控制器,它是一个列表视图(tableviewcontroller),在那里我可以看到一些学生。在每个单元格内部,我有一个图像(UIImage)和4个标签(字符串:名称,指定者,注释和日期),他们从一个数组中获取数据,该数据保存来自实体的信息" {{1} }",每个项目都有一个属性(图像是二进制数据)。我可以通过另一个视图控制器(AlunosLista)添加这些信息并完美地列出它们。应用程序直到这里很好。我不能做的事情,我一直在尝试很多事情,很多事情,就是将数据从选定的行(点击)发送到另一个AddDataVC.swift以获取详细视图(viewcontroller)。当我使用一个简单的数组,没有CoreData,工作正常。但现在我不能这样做。现在部分代码:

文件(1):TableviewController

DetailsVC.swift

这里应该准备(对于segue),我尝试了很多方法。这是最后一个,也没有工作过。 "构建成功",但崩溃了。

 class TabelaListagem: UITableViewController {....

import CoreData
import UIKit

var alunos: [NSManagedObject?] = []
var gerenciadorDeDados: NSManagedObjectContext? = nil

override func viewDidLoad() {
    super.viewDidLoad()



//CORE DATA
    let AppleObject = UIApplication.shared.delegate as! AppDelegate
    gerenciadorDeDados = AppleObject.persistentContainer.viewContext

LoadFetch()
}

(.......)
 override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {

    let path = alunos[indexPath.row]
    let cell = tableView.dequeueReusableCell(withIdentifier: "celulaReuso", for: indexPath) as! ListagemCelulas
cell.lblAluno.text = path?.value(forKey: "nome") as? String
cell.lblPreceptor.text = path?.value(forKey: "preceptor") as? String
cell.lblData.text = path?.value(forKey: "dataHoje") as? String
cell.lblNotaAluno.text = path?.value(forKey: "nota") as? String
let caminhodaImagem = path?.value(forKey: "fotoAluno")
cell.imgAluno.image = UIImage(data: (caminhodaImagem as? NSData) as! Data)

return cell
}

文件(2)DetailViewController

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "segueAluno" {
    if let pathC = tableView.indexPathForSelectedRow{
        let VCDestino = segue.destination as? DescriAluno
        let objeto = FecthResultado?.object(at: pathC)
        VCDestino?.alunoD = objeto as! NSManagedObject?
}

 }
}

崩溃后的错误消息:

  

由于未捕获的异常而终止应用   ' NSInvalidArgumentException',原因:' executeFetchRequest:错误:    不是有效的NSFetchRequest。'

我真的不知道如何继续。我尝试了很多东西,其中一些讲述了import UIKit import CoreData class DescriAluno: UIViewController { @IBOutlet weak var imgFotoAluno: UIImageView! @IBOutlet weak var nomeAluno: UILabel @IBOutlet weak var txtPreceptor: UILabel! @IBOutlet weak var txtNotaAluno: UILabel! @IBOutlet weak var txtDataHoje: UILabel! var gerenciadorDeDados: NSManagedObjectContext! var alunoD: NSManagedObject? override func viewDidLoad() { super.viewDidLoad() //CORE DATA let AppleObject = UIApplication.shared.delegate as! AppDelegate gerenciadorDeDados = AppleObject.persistentContainer.viewContext imgFotoAluno.image = alunoD?.value(forKey: "fotoAluno") nomeAluno.text = alunoD?.value(forKey: "nome") txtPreceptor.text = alunoD?.value(forKey: "preceptor") txtNotaAluno.text = alunoD?.value(forKey: "nota") txtDataHoje.text = alunoD?.value(forKey: "dataHoje") } ,但我可以写或理解它们。如果有人可以帮助我,我很感激。谢谢。

这是获取请求(func):

确定。这是我的获取请求:

NSFetchedResults

0 个答案:

没有答案