【问题标题】:XCode Core Data Not Loading Correctly in Some ScriptsXCode 核心数据在某些脚本中未正确加载
【发布时间】:2020-09-02 18:18:46
【问题描述】:

我使用 Coredata 将我的应用程序的数据保存在一个名为 Homework 的列表中。在我的一个视图控制器 .swift 文件中,我有以下代码:

import UIKit
import CoreData


class HomeworkTableViewController: UITableViewController {
    var homeworks = [Homework]()
    func get() {
        print(homeworks.count)
    }

    // trucated...
}

打印出1

但是,在另一个视图控制器中,我有以下代码:

import UIKit
import CoreData

class HomeworkViewController: UINavigationController {
    
    var homeworks = [Homework]()
    
    @IBOutlet weak var theHomeworkTabBarItem: UITabBarItem!
    override func viewDidLoad() {
        super.viewDidLoad()
        gameTimer = Timer.scheduledTimer(timeInterval: 0.5, target: self, selector: #selector(plsReloadData), userInfo: nil, repeats: true)
        // Do any additional setup after loading the view.
        //theHomeworkTabBarItem.badgeValue = "test"
    }
    
    @objc func plsReloadData() {
        print(homeworks.count)
        if homeworks.count != 0 {
            theHomeworkTabBarItem.badgeValue = String(homeworks.count)
        } else {
            theHomeworkTabBarItem.badgeValue = nil
        }
        
    }

}

打印出0

为什么它们不一样?

【问题讨论】:

  • 你在代码中的什么地方实际加载了核心数据中的值?
  • 这是我的问题,我从来没有在第二个脚本中加载它。不过,我添加了这个。

标签: swift xcode core-data count


【解决方案1】:

您已经定义了 2 个不同的变量,它们都被命名为 homeworks,并且它们指向同一种数组。要让 get() 打印 1,您必须在 HomeworkTableViewController 数组中放入了一些内容,但 HomeworkViewController 中的那个是空的。

【讨论】:

  • 我把变量名设置成唯一的了,既然是保存在CoreData里的,是不是每个脚本都要保存呢,还是每次修改homeworks变量都需要更新一下?
  • 一个简单的数组只知道你告诉它什么。如果您想要一些可以配置为自动跟踪核心数据更改的东西,请查看 NSFetchedResultsController。
猜你喜欢
  • 2020-04-07
  • 1970-01-01
  • 1970-01-01
  • 2015-01-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多