我是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