2013-11-23 75 views
0

我遇到顯示我的實體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 

我也做了同樣的方式在不同的程序,但我不真的不知道爲什麼。

任何幫助或建議將不勝感激!

回答

0

不兼容的指針類型使用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