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

时间:2013-11-23 02:30:39

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

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

我将记录添加到Product实体没有任何问题,我在以下函数中执行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];
     }

这似乎没问题,我最大的问题是显示每个产品的所有订单商品。关系产品====> OrderItems是:产品,逆是订单。 OrderItems ===>产品是:订单和逆是产品。

我尝试显示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中产品中的关系对象是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 个答案:

答案 0 :(得分: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。您可以进行该任务,但不能指望它能正常工作。

  

我在不同的节目中做了同样的事情,但我不知道为什么。

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