gpt4 book ai didi

ios - 从上下文中分离(断开)核心数据实体

转载 作者:行者123 更新时间:2023-11-29 03:12:51 28 4
gpt4 key购买 nike

我正在使用 magic record 来完成我所有的核心数据工作。

一切都很好,除了有时我在后台进行更新时我需要从上下文中分离或断开实体。

例如

ButtonList = [Buttons MR_findAllSortedBy:@"listOrder" ascending:YES];

如何保留实体,但删除对数组 ButtonList 的上下文的引用?

谢谢

最佳答案

只有当您不使用 NSFetchedResultsController 或观察上下文更改并从 UI 中删除已删除对象以反射(reflect)存储状态的代码时,才会发生这种情况。

如果您希望在上下文发现删除后立即从 View 中删除已删除的对象,则需要在主上下文中监听“上下文确实更改通知”并查看已删除的对象集,如果任何已删除的对象都是显示数组的一部分,您需要相应地更新 View (从数组中删除并更新表。NSFetchedResultsController 还会监听上下文更改)。

另一种选择:

因为你自己管理你的 tableview 状态(而不是 fetched results controller)并且如果您希望“按钮”保留在 View 中,包括它们的属性,您可以:

将您的请求更改为返回字典而不是托管对象(删除时不作废):

NSFetchRequest* r = [Buttons MR_requestAllSortedBy:@"listOrder" ascending:YES];
[r setResultType:NSDictionaryResultType];

//This is your link to the data store and managed object (if you later need to fetch by or update if still exist)
NSExpressionDescription* objectIdDesc = [[NSExpressionDescription new] autorelease];
objectIdDesc.name = @"objectID";
objectIdDesc.expression = [NSExpression expressionForEvaluatedObject];
objectIdDesc.expressionResultType = NSObjectIDAttributeType;

[r setPropertiesToFetch:@[objectIdDesc,@"buttonName",@"buttonIcon"/*, and any other property you need for display*/]];

现在剩下要做的就是在您喜欢的任何上下文(甚至在后台)上执行此请求,并将数组返回给您的 TableView Controller 。

这里的区别是你得到的是字典而不是 NSManagedObject 数组。

关于ios - 从上下文中分离(断开)核心数据实体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22028176/

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