gpt4 book ai didi

ios - 在 View 之间传递核心数据实体变量

转载 作者:行者123 更新时间:2023-11-29 03:44:06 26 4
gpt4 key购买 nike

我无法理解如何在 View 之间使用核心数据实体变量,为了更好地理解我的问题是什么,我的代码如下:

View A:

在某些时候,当按下保存按钮时我会这样做:

- (void)guardarOrcamento
{
newBudget=[NSEntityDescription insertNewObjectForEntityForName:@"Budget" inManagedObjectContext:context];

newBudget.relationshipBetweenEntityBudgetAndClient = myEntityClientVariable;

UIAlertView *saved = [[UIAlertView alloc]initWithTitle:@"Budget Saved" message:@"" delegate:nil cancelButtonTitle:@"Ok" otherButtonTitles:nil];

[saved show];

NSError *error;
[context save:&error])
}

View B:

我的问题是在这个 View 中,我需要连接另一个关系,为此,我的“newBudget”变量最不为空!:

- (void) setSelectedRowInTableview:(int)line

{
rowEntity=[NSEntityDescription insertNewObjectForEntityForName:@"rowEntity" inManagedObjectContext:context];
rowEntity.relationshipBetweenEntityRowEntityAndBudget = newBudget;

....

只有在预算实体已经存在的情况下,此 RowEntity 才能存在...此时它确实存在!...在另一个 View 中,我插入了一个新对象并保存了它...并且我理解为什么变量“newBudget” “(在 View B 中)是空的,但我怎样才能坚持它呢?

谢谢您的宝贵时间

最佳答案

基本上,您必须将完整预算实体或相关预算实体的 ID 从 View “A”传递到 View “B”。由于不知道您的应用的 View 层次结构和逻辑,我假设您选择一个预算,然后添加与该预算相关的实体。

独立于变量传递解决方案,您可以选择是将选定/插入的预算对象存储在 NSManagedObject 变量中,还是将预算对象的 ID 存储在 NSManagedObjectID 中,然后使用 -(NSManagedObject *) 检索对象现有ObjectWithID:(NSManagedObjectID *)objectID错误:(NSError **)错误

1)使用全局变量

在 AppDelegate 中设置 NSManagedObject/NSManagedObjectID,并使其可访问:

NSManagedObject *selectedBudgetReference; // OR
NSManagedObjectID *selectedBudgetReferenceID;
...
@property (strong, nonatomic) NSManagedObject *selectedBudgetReference;
@property (strong, nonatomic) NSManagedObjectID *selectedBudgetReferenceID;

然后存储到 View A 处插入/选定的引用中:

AppDelegate *app = (AppDelegate*) [[UIApplication sharedApplication] delegate];
app.selectedBudgetReference = newBudget;
app.selectedBudgetReferenceID = [newBudget objectID];

最终在 View B中访问它:

AppDelegate *app = (AppDelegate*) [[UIApplication sharedApplication] delegate];
NSManagedObject *localBudgetToRelate = app.selectedBudgetReference;
NSManagedObject *localBudgetToRelate2 = [context existingObjectWithID:app.selectedBudgetReferenceID];

2)当用户从 View A切换到B时传递变量

与上面类似,但是您在表单 B (formBViewController) 中设置对象变量,当在表单 A 上并创建表单 B 以切换到该 View 时,您基本上访问表单 B 新创建的 View Controller 并将预算信息传递给 formBViewController 的对象变量。

关于ios - 在 View 之间传递核心数据实体变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17958944/

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