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

问题描述:

我遇到显示我的实体Product和OrderItems记录的大问题。这是一对多关系。显示关系为1的核心数据实体记录:M

我添加记录到产品实体没有任何问题,我执行以下功能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]; 
    } 

这似乎确定,我的最大的问题是显示每个产品的所有订单项。关系Product ====> OrderItems是:产品,逆序是订单。 OrderItems ===> Product是:orders和inverse是产品。

我尝试显示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; 
} 



我知道在产品的产品的关系对象是的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 

我也做了同样的方式在不同的程序,但我不真的不知道为什么。

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

不兼容的指针类型使用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。你可以做这个任务,但你不能指望它能正常工作。

我在不同的程序中做了同样的工作,但我真的不知道为什么。

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

+0

你是100%正确,现在可以。谢谢汤姆。 – user1926649