我是使用Swift进行编码的新手,我一直在使用Aaron Caines的Udemy教程,这一直很棒。他所做的教程是使用UITableViewController。我有一个使用单个UIViewController(只有一个视图,它不是一个UITableViewController)的应用程序。我已经将CoreData加载到构建阶段。我已经能够验证数据保存在属性中,但出于某种原因,我无法将数据加载回视图控制器中的两个文本框和一个图像视图。如何将实体中的属性数据加载到单个(1)UIViewController中?
我在代码中提出了几个问题作为注释。
它应该是为建立变量一样简单:
@IBOutlet var textName: UITextField!
@IBOutlet var descriptionName: UITextField!
@IBOutlet var imageView: UIImageView!
调用实体和准备加载和接收数据的持久化容器:
let pc = (UIApplication.shared.delegate as! AppDelegate).persistentContainer.viewContext
获取数据
var frc : NSFetchedResultsController = NSFetchedResultsController<NSFetchRequestResult>()
func fetchRequest() -> NSFetchRequest<NSFetchRequestResult> {
let fetchRequest = NSFetchRequest<NSFetchRequestResult>(entityName: "NamedEntity")
// DO I NEED A SORTER IF I'M NOT USING A TABLEVIEW?
//let sorter = NSSortDescriptor(key: "accounttext", ascending: false)
//fetchRequest.sortDescriptors = [sorter]
return fetchRequest
}
func getFRC() -> NSFetchedResultsController<NSFetchRequestResult> {
frc = NSFetchedResultsController(fetchRequest: fetchRequest(), managedObjectContext: pc, sectionNameKeyPath: nil, cacheName: nil)
//OCCASIONALLY THERE'S AN ISSUE WITH THE sectionNameKeyPath.
//THE ERROR INVOLVES TRYING TO "UNWRAP A NIL VALUE".
//IS THERE ANOTHER VALUE I SHOULD BE CONSIDERING?
return frc
}
当视图加载或出现时获取数据:
override func viewDidLoad() {
super.viewDidLoad()
frc = getFRC()
frc.delegate = self
do {
try frc.performFetch()
}
catch {
print(error)
return
}
// WHAT DO I USE HERE IF I'M NOT USING A TABLEVIEW?
self.tableView.reloadData()
}
override func viewDidAppear(_ animated: Bool) {
frc = getFRC()
frc.delegate = self
do {
try frc.performFetch()
}
catch {
print(error)
return
}
// WHAT DO I USE HERE IF I'M NOT USING A TABLEVIEW?
self.tableView.reloadData()
}
,然后装载到相应的框:
//THIS IS WHERE THINGS GET STUCK
// HOW DO I CALL THE ATTRIBUTES OF MY ENTITY AND UPDATE MY VARIABLES IF I'M NOT USING A TABLEVIEW?
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "Cell", for: indexPath) as! cellAccountTableViewCell
let item = frc.object(at: indexPath) as! Entity
cell.nameText.text = item.accounttext
cell.descriptionText.text = item.amounttext
cell.imageView.image = UIImage(data: (item.image)! as Data)
return cell
}
我只有2个文本框和1个的图像视图。我花了最近三天的时间搜集了几十个毫无用处的论坛主题和无数YouTube视频,但似乎每个人都给出了关于使用表格视图控制器的教程。
最有有用我发现的东西是电子军械库的视频。这帮助我了解了Entity(i),attrubutes和persistentContainer的结构。它还涉及数据库的关系方面。
https://www.youtube.com/watch?v=da6W7wDh0Dw
我可以使用一(1)单一的UIViewController核心数据,如果是这样,我怎么调用数据并将其加载到相应的字段?让我知道是否需要更多信息。
我真的很想了解核心数据过程。我错过了什么,或者我不了解加载过程?任何帮助,将不胜感激!
感谢,
卢克
谢谢。我会玩这个,让你知道我找到了什么。 – Luke