我在显示来自我的实体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
我在不同的节目中做了同样的事情,但我不知道为什么。
非常感谢任何帮助或建议!
答案 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
。您可以进行该任务,但不能指望它能正常工作。
我在不同的节目中做了同样的事情,但我不知道为什么。
要么你在其他应用程序中做了不同的事情,要么你在那里得到了相同的信息。