gpt4 book ai didi

iOS MagicalRecord 之谜。为什么我的数据在 truncateAll 之后重新启动时会重新出现?

转载 作者:行者123 更新时间:2023-11-29 10:49:23 26 4
gpt4 key购买 nike

我有一个通过 MagicalRecord 使用 Core Data 的小应用程序,目的是学习如何按类别对事件进行分组并在分组 TableView 中显示数据。因此,我有两个实体,这里只使用其中一个。它称为 ListActivity,有两个属性,“name”和“category”,都是字符串。

抛开我在理解 MR 中提供的各种分组和排序方法的工作原理方面的困难,我添加了一个“TruncateAll”按钮来简单地清除记录,以便我可以重新输入数据。

这是该按钮的 IBAction 方法:

- (IBAction)dumpMemory:(UIButton *)sender
{
[ListActivity MR_truncateAll];
[self refreshData];
}

这是一件奇怪的事情:按钮操作将 TableView (可能还有商店)擦干净,正如预期的那样。

但是,如果我通过 Xcode 中的“停止”按钮终止 sim,然后重新启动它,所有数据都会重新出现在 tableview 中。这里有几个截图来说明:

输入数据后:

enter image description here

点击 TruncateAll 按钮后:

enter image description here

杀完再重启,数据又莫名其妙的出现了:

enter image description here

但是,如果我在 sim 中终止应用程序:

enter image description here

当它重新启动时,一切都是干净的:

enter image description here

有 MagicalRecord 经验的人可以告诉我我缺少什么吗?

谢谢!

编辑:

好的,感谢所有回答的人!大家立刻看出了我的错误。我像这样修改了我的 IBAction 方法:

- (IBAction)dumpMemory:(UIButton *)sender
{
NSManagedObjectContext *localContext = [NSManagedObjectContext MR_contextForCurrentThread];
[ListActivity MR_truncateAllInContext:localContext];
[localContext MR_saveToPersistentStoreAndWait];

[self refreshData];
}

现在一切正常!

非常感谢!

最佳答案

这种情况在MagicalRecord开发中很常见。通过主要教程,MagicalRecord 仅在应用程序进入后台时保存上下文。因此,如果您在 Application Delegate 中调用 applicationDidEnterBackground 方法之前终止应用程序,截断将不会保存。

当您从模拟器中删除应用程序时,所有应用程序数据都将被删除。

要解决这个问题,一定要在适当的地方调用MagicalRecordsave方法,如果只是测试,可以在IBAction中 的“全部截断”按钮。

关于iOS MagicalRecord 之谜。为什么我的数据在 truncateAll 之后重新启动时会重新出现?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21100123/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com