【问题标题】:Simple retrieving values from CoreData returns null for entities从 CoreData 中简单检索值会为实体返回 null
【发布时间】:2012-10-27 00:40:30
【问题描述】:

我有两个实体。它们被命名为 SP 和代码。我分别有 10 和 5 个属性。我对这两个实体都有反向关系。我使用 firefox 插件 sqlite manager 将数据输入到模型中。所以我没有写这样的一行 sp.coderelationship = codeObj;或 code.sprelationship = spObj;代码中的任何位置。现在在视图控制器中,我正在检索数据。 self.spArray = [self.managedObjectContext executeFetchRequest:fR error:&error];

for(SP *spObj in self.spArray)
{
    NSLog(@"description is %@",spObj.sPDescription);
    Code *codObj = spObj.coderelationship;
    NSLog(@"it has value %@",codObj);
    NSLog(@" unique name is %@",codObj.uniqueCodeName);
}

输出是正确的描述。它打印一个值“xyz”。但对于最后 2 个日志,它的值为空。 我的实体设计

SP

-sPD描述 -sPName -sPID 关系 -代码关系


代码 -代码名称 -codeID -codeDate 关系 -sprelationship

如果需要更多信息,请告诉我。谢谢..

【问题讨论】:

    标签: objective-c sqlite core-data null entities


    【解决方案1】:

    在执行获取请求之前添加以下代码:

    NSString *relationshipKeyPath = @"coderelationship"; // Set this to the name of the relationship on "SP" that points to the "Code" objects;
    NSArray *keyPaths = [NSArray arrayWithObject:relationshipKeyPath];
    [fR setRelationshipKeyPathsForPrefetching:keyPaths];
    

    另外,您是否验证了关系已正确插入到数据库中?

    【讨论】:

    • 鲈鱼。谢谢你提供的详情。我添加了该代码,但我仍然没有看到任何值。另外,我如何检查关系是否已正确插入?我仍处于 Core Data 的学习模式。
    • 您应该在应用程序资源包中找到 sqlite db 文件。您可以使用一些 sqlite 浏览器(例如 SQLiteManager)打开它并检查表的结构和内容。
    • @Michele Percich。我做了那一步,我可以在那里进行内部连接,看看它可以从两个表中获取数据。好吧,我的朋友告诉我,如果我在代码中编写或设置关系,那么只有我可以检索该值,否则我不能。显然我在项目中做了一个不需要的步骤。我可以跳过它并在正确的步骤中设置关系。这将像我以前一样为我带来所需的信息。再次感谢。
    猜你喜欢
    • 2019-01-04
    • 2012-08-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多