Swift 某些脚本中未正确加载XCode核心数据
我用Coredata将应用程序的数据保存在一个名为“家庭作业”的列表中。在我的一个View Controller.swift文件中,我有以下代码: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) }
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。您在代码中实际从核心数据加载值的位置?这是我的问题,我从未在第二个脚本中加载它。不过我把这个加进去了。