I am new to Objective-C and Core Data. I am working on a small project as part of my learning. I created Core Data with entities such as Product
, OrderItem
, Sales
and Supplier
.
Attributes:
Product : product-id, supplier-id, productName, category, subcategory,qty, price,minStock,frequency. Order : order-id, orderDate. OrderItem : order-id, product-id,qty,price, total, orderDate.
I have created relationships between Product
and OrderItem
with OrderItem
inverse to Product
.
Relationship Destination Inverse ordersItem OrderItem --
for OrderItem to Product:
Relationship Destination Inverse product Product ordersItem
My main issue is how do I display ordered items from OrderItem by joining product as: Product-id, ProductName, OrderDate, OrderId, Qty, Price, Total ?
To achieve above if it is normal sql i could run like "Select product-id, productName, order-id, orderDate, qty, price, total from OrderItem o, Product p where o.product-id=p.product-id"
The same way to fetch from OrderItem using core data i could try:
-(NSMutableArray *)loadData{
// Fetch the OrderItems from OrderItem model through from persistent data store
NSManagedObjectContext *managedObjectContext = [self context];
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] initWithEntityName:@"OrderItem"];
//How do i do to get productName from Product
//the relationship is based on "product" from OrderItem to Product
//I need to get productName and add to array list below to display on the screen.
NSMutableArray *orderList =[[NSMutableArray alloc]init];
orderList =[[managedObjectContext executeFetchRequest:fetchRequest error:nil] mutableCopy];
return orderList;
}
I do not have any issue displaying from one entity but my issue is from multiple entities?
Any help or advice would be appreciated?
I am trying to add Product and OrderItems at the same time in the code below but i am having error "orders.orderToProd = [NSSet setWithObject: entDesc.prodToOrder];" is it the right way ?
- (IBAction)cmdAdd:(id)sender { NSManagedObjectContext *context =[self managedObjectContext]; Product *entDesc =[NSEntityDescription insertNewObjectForEntityForName:@"Product" inManagedObjectContext:context]; //set Product details entDesc.productName = self.txtName.text; entDesc.category = self.txtCategory.text; entDesc.qty=[NSNumber numberWithInteger:[self.txtQty.text integerValue]]; //add OrderItems details here OrderItems *orders=[NSEntityDescription insertNewObjectForEntityForName:@"OrderItems" inManagedObjectContext:context]; orders.price=[NSNumber numberWithInteger:[self.txtprice.text integerValue]]; orders.orderQty=[NSNumber numberWithInteger:[self.txtOrderQty.text integerValue]]; orders.total=[NSNumber numberWithInteger:[self.txtTotal.text integerValue]]; //orderToProd is the relationship object from orderItem to Product and prodToOrder is relationship from Product to OrderItem //I am getting error with this line. I think it expects for array or comma based items //Please help orders.orderToProd = [NSSet setWithObject: entDesc.prodToOrder]; NSError *error = nil; // Save the object to persistent store if (![context save:&error]) { NSLog(@"Can't Save! %@ %@", error, [error localizedDescription]); } }