CoreData 和访问关系的问题:请求非结构或联合中的成员

Posted

技术标签:

【中文标题】CoreData 和访问关系的问题:请求非结构或联合中的成员【英文标题】:Problem with CoreData and accessing relationships : request for member in something not a structure or union 【发布时间】:2010-06-04 11:56:00 【问题描述】:

我有一个关于我想与 CoreData 一起使用的相当高级的 DataModel 的问题。

在详细介绍我到目前为止所做的事情之前,我先描述一下我想做什么。

我有一份入住一个房间并有偏好的酒店客人名单。一旦准备就绪,用户应该选择一个客人并查看数据,还应该能够添加新客人,选择房间(也由应用程序维护)并选择他们的偏好(用户还可以添加新的偏好)。客人可以没有或有很多偏好。

这就是我目前所拥有的。我创建了 3 个实体: - 带有房间号的房间 - 带有名称的首选项 - 带有名称的 GuestInfo -> 带有这些关系房间(目标房间)和首选项(具有“对多关系”的目标首选项)当您创建托管时,首选项是一个 NSSet对象类。

到目前为止一切顺利。现在我有一个显示所有来宾的 UITableViewController,当我单击一个来宾时,我有另一个 UITableViewController 显示详细信息(DetailsViewController)。单击首选项它将转到另一个 UITableViewController,我可以在其中选择首选项。我遇到的问题是当我想实际访问 DetailsViewController 中的首选项时。这是我的 cellForRowAtIndexPath:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 


    static NSString *CellIdentifier = @"Cell";

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) 
    
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue2 reuseIdentifier:CellIdentifier] autorelease];
        cell.editingAccessoryType = UITableViewCellAccessoryDisclosureIndicator;
    

switch (indexPath.row) 

  case 2:
    cell.textLabel.text = @"Preferences";

    NSEnumerator *e = [info.prefs objectEnumerator];
    id collectionMemberObject;

    while ( (collectionMemberObject = [e nextObject]) ) 
    

    Preferences *prefInfo = collectionMemberObject;         
    DebugLog(@"===> %@", prefInfo.name);

    

    break;

info 是我传递给 DetailsViewController 的 GuestInfo。

现在有了这个,我确实得到 “请求非结构或联合中的成员” 访问 prefInfo.name。

知道有什么问题吗?

谢谢

【问题讨论】:

【参考方案1】:

我也遇到了同样的问题,解决方法很简单,只要你一听到就会用头撞墙;)

尝试 [prefInfo name] 而不是 prefInfo.name。

【讨论】:

完全正确,点语法不适用于通用指针。它的许多失败之一。

以上是关于CoreData 和访问关系的问题:请求非结构或联合中的成员的主要内容,如果未能解决你的问题,请参考以下文章

CoreData:通过关系访问对象

访问 CoreData 关系

目标 C:在非结构或联合的情况下请求成员 XXX。 (核心数据)

如何基于另一个实体的一对多关系访问 CoreData 实体?

嵌套树结构中的核心数据获取请求

CoreData - 访问关系的麻烦