Я новичок в Objective-C и Основные данные. Я работаю над небольшим проектом в рамках своего обучения. Я создал Core Data с такими объектами, как Product
, OrderItem
, Sales
и Supplier
.Извлечь данные из основных данных нескольких объектов
Атрибуты:
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.
я создал отношения между Product
и OrderItem
с OrderItem
обратной к Product
.
Relationship Destination Inverse ordersItem OrderItem --
для OrderItem к продукту:
Relationship Destination Inverse product Product ordersItem
Моя главная проблема в том, как я показываю заказанные товары из OrderItem путем присоединения изделия как: Product-ид, ProductName, OrderDate, OrderId, Кол-во, Цена, всего?
Чтобы достичь выше, если это нормальный sql, я мог бы работать как «Выбрать идентификатор продукта, productName, order-id, orderDate, qty, price, total from OrderItem o, Product p где o.product-id = p. продукт-идентификатор»
Тот же способ извлечения из OrderItem с использованием основных данных, я мог бы попробовать:
-(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;
}
у меня нет какого-либо вопроса, отображающего от одного объекта, но мой вопрос от нескольких лиц?
Любая помощь или совет будут оценены?
Я пытаюсь добавить Product и OrderItems в то же время в код ниже, но у меня ошибка "orders.orderToProd = [NSSet setWithObject: entDesc.prodToOrder];" это правильный путь?
- (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]); } }
Спасибо, Мартин !, Я дам ему ход и дам вам знать результаты. – user1926649
Я действительно смущен. Скажем, я добавляю детали продукта к товарному объекту позже, чтобы захватить любое имя продукта из объекта Product и добавить в OrderItem внешние ключи (идентификатор продукта и идентификатор заказа). В основных данных, если я не сохраняю общее поле в обоих объектах, как знает Core Data? – user1926649
@ user1926649: вы просто установили отношения, например 'theOrderItem.product = theProduct' добавляет' theOrderItem' в элементы заказа 'theProduct', если отношения и обратные отношения правильно определены. –