Swift 某些脚本中未正确加载XCode核心数据

Swift 某些脚本中未正确加载XCode核心数据,swift,xcode,core-data,count,Swift,Xcode,Core Data,Count,我用Coredata将应用程序的数据保存在一个名为“家庭作业”的列表中。在我的一个View Controller.swift文件中,我有以下代码: import UIKit import CoreData class HomeworkTableViewController: UITableViewController { var homeworks = [Homework]() func get() { print(homeworks.count) }

我用Coredata将应用程序的数据保存在一个名为“家庭作业”的列表中。在我的一个View Controller.swift文件中,我有以下代码:

import UIKit
import CoreData


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

    // trucated...
}

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
        }
        
    }

}
打印出
1

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

import UIKit
import CoreData


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

    // trucated...
}

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


为什么它们不一样?

您定义了两个不同的变量,它们都恰巧被命名为
homeworks
,并且指向相同类型的数组。对于要打印1的
get()
,您必须在
HomeworkTableViewController
数组中放入一些内容,但是
HomeworkViewController
中的一个是空的。

我将变量名设为唯一的,因为它保存在CoreData中,所以不会在每个脚本中保存它,还是每次更改homeworks变量时都需要更新它?一个简单的数组只知道你告诉它什么。如果您想要一些可以配置为自动跟踪核心数据更改的内容,请查看NSFetchedResultsController。您在代码中实际从核心数据加载值的位置?这是我的问题,我从未在第二个脚本中加载它。不过我把这个加进去了。