显示关系为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
。你可以做这个任务,但你不能指望它能正常工作。
我在不同的程序中做了同样的工作,但我真的不知道为什么。
要么你在其他应用程序中做了不同的事情,要么你在那里得到了相同的消息,你得到了这里。
你是100%正确,现在可以。谢谢汤姆。 – user1926649