【问题标题】:Fetching relations with Core Data获取与核心数据的关系
【发布时间】:2010-01-27 19:48:05
【问题描述】:

我有两个具有双向关系的托管对象。 它是一个“segmentWithDetails”,其中包含一个“segment”对象。

我用

NSEntityDescription *entity = [NSEntityDescription entityForName:@"SegmentWithDetails" 
                                          inManagedObjectContext:connectionDetailsService.connectionDetailsContext];
[fetchRequest setEntity:entity];

获取我的 segmentWith 详细信息。这工作正常。

但是,当我尝试检索包含的段时,我得到了 nil。

我已经试过了

Segment *segment = [segmentWithDetails valueForKeyPath:@"segment"];

Segment *segment = segmentWithDetails.segment;

但这不起作用(=nil)。我也尝试过修改 NSFetchedResultsController。 我添加了以下内容:

[fetchRequest setRelationshipKeyPathsForPrefetching:[NSArray arrayWithObject:@"segment"]];
[fetchRequest setIncludesSubentities:YES];

但这两者似乎没有任何区别。 根据我对 Apple 精美文档的理解,这种关系应该只使用错误。

我在这里缺少什么? 如何从“segmentWithDetails”获取关系对象“segment”??

【问题讨论】:

    标签: core-data entity-relationship nsfetchrequest


    【解决方案1】:

    它应该像你描述的那样工作。您确定“段”对象/关系确实存在并包含真实对象吗?检查此关系不是可选的数据模型,并检查您的代码是否实际存储了一些东西。

    【讨论】:

    • 是的,他们有一个现有的关系。我使用 SOAP Web 服务来填充数据。那里没问题。我还可以更改 fetchedResultsController 以在 segmentWithDetails 和 segment 之间切换。但我无法从段获取到父段的详细信息,反之亦然。我从我用来用数据填充对象的对象中重新使用 NSManagedObjectContext。这可能是个问题吗?
    【解决方案2】:

    问题解决了。 这不是我如何读取数据,而是我如何将其放入 CoreData。 上面发布的代码确实是正确的。感谢 Jaanus 的回复。

    【讨论】:

    • 仅供参考 - 您可以对答案发表评论
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多