【问题标题】:Display Core Data entity records with relationship 1:M显示具有关系 1:M 的 Core Data 实体记录
【发布时间】:2013-12-08 02:20:03
【问题描述】:

我在显示来自我的实体 Product 和 OrderItems 的记录时遇到很大问题。这是一对多的关系。

我向 Product 实体添加记录没有任何问题,并在以下函数中执行 OrderItem 条目:

- (IBAction)cmdSave:(id)sender { self.product.productName = self.txtProductName.text; NSManagedObjectContext *context =[self managedObjectContext]; 订单项 *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(@"未解决的错误 %@, %@", error, [error userInfo]); 中止(); } [self.navigationController popViewControllerAnimated:YES]; }

这似乎没问题,我最大的问题是显示每个产品的所有订单项目。 Product ====> OrderItems 的关系是:产品,反之是订单。 OrderItems ===>产品是:订单,反之是产品。

我尝试显示 fetchedResult

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { 静态 NSString *CellIdentifier = @"Cell"; UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath]; // 配置单元格... 产品 *prod = [self.fetchedResultsController objectAtIndexPath:indexPath]; ************************ //我想连接到关系对象并获取所有订单,但我得到了不兼容的指针类型,它使用 NSSet 类型的表达式初始化“OrderItems *_Strong”。 ******有任何想法吗? OrderItems *order=prod.product; ****************************************** cell.textLabel.text =prod.productName; cell.detailTextLabel.text =[NSString stringWithFormat:@"%@",order.price]; 返回单元格; }

我知道 Product 中 product 中的关系对象是 NSSet 如下:

@interface 产品:NSManagedObject @property (nonatomic, 保留) NSString * productName; @property (nonatomic, 保留) NSNumber * qty; @property (nonatomic, 保留) NSSet *product; @结尾 @interface 产品(CoreDataGeneratedAccessors) - (void)addProductObject:(NSManagedObject *)value; - (void)removeProductObject:(NSManagedObject *)value; - (void)addProduct:(NSSet *)values; - (void)removeProduct:(NSSet *)values; @结尾

我在不同的程序中做过同样的事情,但我不知道为什么。

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

【问题讨论】:

    标签: objective-c core-data ios6 xcode4.5


    【解决方案1】:

    使用 NSSet 类型的表达式初始化“OrderItems *_Strong”的不兼容指针类型。

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

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

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

     @property (nonatomic, retain) NSSet *product;
    

    这就是您收到该消息的原因。您有一个指向 NSSet 的指针,并且您正试图将它分配给指向 OrderItems 的指针。我不知道OrderItems 是什么,但它不是NSSet。您可以进行该分配,但不能期望它正常工作。

    我在不同的程序中做过同样的事情,但我不知道为什么。

    您在其他应用程序中的做法有所不同,或者您在此处收到的信息与您在此处获得的信息相同。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-03-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多