ios - 如何将属性数据从实体加载到单个 (1) UIViewController 中?

标签 ios swift core-data load-data-infile

我是使用 Swift 编码的新手,我一直在使用 Aaron Caines 提供的 Udemy 教程,非常棒。他所做的教程是使用 UITableViewController。

我有一个使用单个 UIViewController 的应用程序(只有一个 View ,它不是 UITableViewController)。我已经将 CoreData 加载到构建阶段。我已经能够验证数据是否保存在属性中,但由于某种原因,我无法将数据加载回 View Controller 中的两个文本框和一个 ImageView 中。

我在代码中添加了几个问题作为注释。

它应该像设置变量一样简单:

@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

    }

每当 View 加载或出现时获取数据:

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 个 ImageView 。在过去的三天里,我花了几十个无用的论坛主题和无数的 YouTube 视频来寻找这个答案,但似乎每个人都提供了有关使用 TableView Controller 的教程。

我发现的最有用的东西是 Electronic Armory 的视频。这帮助我理解了实体、属性和持久容器的结构。它还涉及数据库的关系方面。

https://www.youtube.com/watch?v=da6W7wDh0Dw

我可以在一 (1) 个 UIViewController 上使用核心数据吗?如果可以,我如何调用数据并将其加载到适当的字段中?如果需要更多信息,请告诉我。

我真的很想了解核心数据流程。我错过了什么,或者我对加载过程不了解什么?任何帮助将不胜感激!

谢谢

卢克

最佳答案

I have an app that uses a single UIViewController (ONLY ONE VIEW and it's not a UITableViewController).

I only have 2 text boxes and 1 image view.

假设从获取中只返回一个实体(否则你将如何显示所有实体?),可能是这样的:

//  WHAT DO I USE HERE IF I'M NOT USING A TABLEVIEW?

//self.tableView.reloadData()

if let fetchResult = frc.fetchedObjects{
    if let item = fetchResult.first as? Entity{
         textName.text = item.accounttext
         descriptionName.text = item.amounttext   
         imageView.image = UIImage(data: (item.image)! as Data)   
     }

}

关于ios - 如何将属性数据从实体加载到单个 (1) UIViewController 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42843202/

相关文章:

iOS 奇迹 API : How to get all Characters

ios - 自定义过渡

ios - 安装后库内的 Swift Eureka 错误

iphone - 使用 Between Predicate Statement 和 Float 时发生崩溃

iphone - 重复 self 执行选择器

ios - 来自任意 anchor 的弹出窗口 - Swift

ios - UISearchBar 设置为 titleView 在推送 segue 时表现得很奇怪

swift - 重复 SKAction 起始位置变化

ios - 集成和核心数据轻迁移

objective-c - 如何刷新 NSFetchedResultsController?