当前位置: 首页 > 知识库问答 >
问题:

显示关系为1:M的核心数据实体记录

柳灿
2023-03-14

我在显示实体产品和订单项的记录时遇到了大问题。这是一对多关系。

我向产品实体添加了记录,没有任何问题,我在以下函数中执行OrderItem输入:

     
     - (IBAction)cmdSave:(id)sender {

          self.product.productName = self.txtProductName.text;

          NSManagedObjectContext *context =[self managedObjectContext];
          OrderItems *oi=
          [NSEntityDescription  
          insertNewObjectForEntityForName:@"OrderItems"  inManagedObjectContext:context];

          [oi setValue:[NSNumber numberWithInteger:[self.txtQty.text integerValue]] forKey:@"ordQty"];
          [oi setValue:[NSNumber numberWithInteger:[self.txtPrice.text integerValue]] forKey:@"price"];
          [oi setValue:[NSNumber numberWithInteger:[self.txtTotal.text integerValue]] forKey:@"total"];
          [oi setOrders:self.product];

           NSError *error = nil;
           if (![context save:&error]) {
           NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
           abort();
          }
           [self.navigationController popViewControllerAnimated:YES];
     }

这似乎没问题,我最大的问题是显示每个产品的所有订单项。关系产品====

我尝试显示fetchedResult



- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier = @"Cell";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];

    // Configure the cell...
      Product *prod = [self.fetchedResultsController objectAtIndexPath:indexPath];

  *********************
     //I wanted to connect to relationship object and get all orders but I get Incompatible   pointer types initializing 'OrderItems *_Strong ' with an expression of type NSSet.

   ******any ideas? 
    OrderItems *order=prod.product;
    **************************************

    cell.textLabel.text =prod.productName;
    cell.detailTextLabel.text =[NSString stringWithFormat:@"%@",order.price];



    return cell;
}



我知道product中product中的relationship对象是NSSet,如下所示:




     @interface Product : NSManagedObject

     @property (nonatomic, retain) NSString * productName;
     @property (nonatomic, retain) NSNumber * qty;
     @property (nonatomic, retain) NSSet *product;
     @end

     @interface Product (CoreDataGeneratedAccessors)

     - (void)addProductObject:(NSManagedObject *)value;
     - (void)removeProductObject:(NSManagedObject *)value;
     - (void)addProduct:(NSSet *)values;
     - (void)removeProduct:(NSSet *)values;

     @end

我在不同的项目中也用同样的方法,但我真的不知道为什么。

任何帮助或建议都将不胜感激!

共有1个答案

夹谷奇
2023-03-14

使用NSSet类型的表达式初始化“OrderItems*\u Strong”时,指针类型不兼容。

这很简单。你似乎知道。问题是:

Product *prod = [self.fetchedResultsController objectAtIndexPath:indexPath];
OrderItems *order=prod.product;

您正在为OrderItems类型的指针分配一个值,您正在分配的是prod.product。那是什么?这是一个NSSet:

 @property (nonatomic, retain) NSSet *product;

这就是为什么你会得到这样的信息。您有一个指向NSSet的指针,并且试图将其分配给指向OrderItems的指针。我不知道OrderItems是什么,但它不是NSSet。你可以做那项任务,但你不能指望它能正常工作。

我在不同的项目中也用同样的方法,但我真的不知道为什么。

要么你在其他应用程序中做了不同的事情,要么你在那里得到了与这里相同的消息。

 类似资料:
  • 我已经找到了几个这样的帖子,但不能确定我在这里做错了什么。 我试着在两张桌子上各放一个项目。第二项包含对第一项的查找。我可以在没有问题的情况下为父级添加种子,但无法找到正确的语法来为子级添加种子。 下面是我用来种子父级的代码 下面是种子子的代码--这将失败: 根据文档的建议,我使用了一个匿名对象,而不是类本身。我也尝试过同时使用navigation属性、外键和nav道具。ID=1的组肯定已经在db

  • 所以我试图建立一个网站使用Spring Boot和React。 到目前为止,我有一个注册表单连接到我的spring后端localhost:8080/api/test/customers(这里有CRUD操作的endpoint) 这很好,我可以从我的React表单将表单数据发布到它,并且我可以在postman中查看它,以从API获得预期的响应。 但现在我在网站上有了另一个表单(一个用户输入姓名、电子邮

  • 问题内容: Xcode 8更新: 在Xcode 8中,需要转到Core Data Model Editor并显示File Inspector。底部附近是代码生成的选项。选择快速。 编辑 :我找到了从核心数据实体生成Swift模型的解决方案: 在Xcode上: 编辑器 >创建NSManagedOjbect>单击按钮“下一步”>单击按钮“下一步”>选择“快速”语言>单击按钮“创建” 我使用Core D

  • 假设我有两个核心数据实体。一个学生实体和一个类实体。在这个例子中,一个学生正好在一个班级中,一个班级可以有很多学生。 我们也假设这些是大类。也就是说,每个班有1000名学生。 类实体如下所示: 和学生实体: 在我的UI中,我想显示一个类。我想显示有一定分数的学生人数。一、 对于一个1000名学生的班级,50名学生得了a,500名学生得了B,200名学生得了C,以此类推。 从核心数据中获取这些计数的

  • 图像我有以下实体:公司和员工,带有Spring数据neo4j注释: Company.java 受雇者JAVA 然后是这些实体的关系实体: 那么如何保留和中的引用呢? Company.java 或 人JAVA 或

  • 本文向大家介绍core-data 向核心数据模型添加实体,包括了core-data 向核心数据模型添加实体的使用技巧和注意事项,需要的朋友参考一下 示例 首先,重要的是要了解核心数据模型是*.xcdatamodeld文件。您会注意到您没有实体。您将必须自己创建一个。在Xcode的底部,您会注意到一个按钮,上面写着“添加实体”,然后在导航器区域中将有一个新实体供您在项目上使用。