【发布时间】:2017-07-27 18:30:33
【问题描述】:
当我从 CoreData 加载主 TableView 项目列表时,它通过以下方式完美显示:
let fetchRequest:NSFetchRequest<Identity> = Identity.fetchRequest()
do
{
identities = try DatabaseController.getContext().fetch(fetchRequest)
print("number of results: \(identities.count)")
for identity in identities as [Identity]
{
print("\(identity.pName!) is \(identity.accuracy)% Robesper. Updeted \(identity.lastModified!).")
}
}
catch
{
print("Error fetchRequest in ViewWillApper: \(error)")
}
删除也很有效,所以我创建了一个新的 NavigationController 和一个用于添加新对象的视图。
为了检查列表并找出问题所在(很明显),我输出了 list.count 。因为当我加载带有列表新项目的主 TableView 时,基本上不会出现。但是,当我重新启动模拟器时,它会显示所有项目。
所以 1. 创建新对象。
> number of results: 3 Hello World is 99% Robesper. Updeted 2017-07-08 > 17:50:30 +0000. Sex is 99% Robesper. Updeted 2017-07-27 17:56:12 > +0000. test is 99% Robesper. Updeted 2017-07-27 18:03:28 +0000.
现在 -> 转到 TableView -> 我在 viewDidLoad 和 viewWillAppear 检查了列表。
-
它是“0”。太好了,因为它并不杂乱,我们现在可以从 TableViewController 中的 CoreData 列表中查看。
number of results viewDidLoad: 0 viewWillAppear: 0 number of results: 2 Sex is 99% Robesper. Updeted 2017-07-27 17:56:12 +0000. Hello World is 99% Robesper. Updeted 2017-07-08 17:50:30 +0000. after fetch: 2 - 重新启动模拟器。它现在向我展示了 3 个项目。但是当我重复添加项目时,它会再次发生。
可能是因为我们从 AppDelegate 保存的程序终止了?
func applicationWillTerminate(_ application: UIApplication)
{
DatabaseController.saveContext()
}
我在 ViewWillAppear 上粘贴了 save .saveContext(),没有用。什么?我做错了什么伙计们?请!救救我:D
【问题讨论】:
-
请将项目保存到主队列中
-
并将表重新加载到主队列中
-
请检查我的回答。
-
我正在检查几天......耐心)