将核心数据对象传递给 didSelectRowAtIndexPath 上的子视图

Posted

技术标签:

【中文标题】将核心数据对象传递给 didSelectRowAtIndexPath 上的子视图【英文标题】:Passing a core data object to a sub view on didSelectRowAtIndexPath 【发布时间】:2012-11-21 09:31:13 【问题描述】:

我有一个包含 2 个数据库实体的核心数据设置。为了名称,我将它们称为主要和次要。次要只属于一个主要(建立关系)。在列出表中主要对象的主视图中,我检索了它们并将它们放入存储它的属性(包括托管对象 ID)的 PriObject 类中。然后将 PriObject 添加到可变数组 (priArray),然后使用该数组填充数据表。到目前为止一切正常。当我点击该行时,我可以记录 PriObject.moID。

我不知道如何在数据库中查找该对象,因此我可以向其中添加辅助对象。我不能按名称进行操作,因为某些 Primary 可能具有相同的名称。

我需要弄清楚如何从 URI 或 ID 中取回对象。我有 ID,因此如果需要,我可以生成 URI。

完全无法理解它,而且我在查找时发现的任何示例都不能满足我的需要。有哪些选择?

编辑:我目前正在使用以下内容获取所有对象。

AppDelegate *appDelegate = [[UIApplication sharedApplication] delegate];

NSManagedObjectContext *context = [appDelegate managedObjectContext];

NSEntityDescription *entityDesc = [NSEntityDescription entityForName:@"Primary"
                                              inManagedObjectContext:context];

NSFetchRequest *request = [[NSFetchRequest alloc] init];
[request setEntity:entityDesc];

NSError *error;
NSArray *objects = [context executeFetchRequest:request
                                          error:&error];


if ([objects count] == 0) 
    NSLog(@"Nothing found");
 else 
    NSLog(@"Something found");

我怎样才能改变这个只是使用:

ObjectWithID:

【问题讨论】:

【参考方案1】:

在您的 NSManagedObjectContext 实例上调用 objectWithID: 方法以检索实例。

顺便说一句,你似乎在用这个PriObject 类让自己变得更难,它似乎是你的NSManagedObject 实例的包装,对吗?我个人直接使用NSManagedObject 子类。

【讨论】:

你说得有道理,但我认为我的课会让任何重复的事情变得更容易做,即用 if 语句等切换桌子上的图像。我可能会让自己的生活更难老实说,但是因为我觉得它很复杂,所以我想让每个班级都尽可能干净。我将尝试使用您建议的代码,看看效果如何。

以上是关于将核心数据对象传递给 didSelectRowAtIndexPath 上的子视图的主要内容,如果未能解决你的问题,请参考以下文章

从 UITableView 选择行时将核心数据对象传递给另一个视图控制器

OS X Core Data - 将托管对象上下文传递给视图控制器

如何使用核心数据将对象传递给 SwiftUI 中的其他视图

将 parcelable 对象传递给新活动返回 null

将 C++ 对象传递给 C#

将 JSON 对象传递给 WebApi