core data - una - Visualizar registros de entidad de datos básicos con relación 1: M
modelo entidad relacion libro (1)
Tipos de punteros incompatibles que inicializan ''OrderItems * _Strong'' con una expresión de tipo NSSet.
Es bastante sencillo. Casi parece que lo sabes. El problema es:
Product *prod = [self.fetchedResultsController objectAtIndexPath:indexPath];
OrderItems *order=prod.product;
Está asignando un valor a un puntero de tipo OrderItems
, y lo que está asignando es prod.product
. Pero, ¿qué es eso? Es un NSSet
:
@property (nonatomic, retain) NSSet *product;
Es por eso que obtienes ese mensaje. Tiene un puntero a NSSet
e intenta asignarlo a un puntero a OrderItems
. No sé lo que es OrderItems
, pero no es un NSSet
. Puedes hacer esa tarea, pero no puedes esperar que funcione correctamente.
He hecho lo mismo en diferentes programas, pero no sé realmente por qué.
O hiciste las cosas de manera diferente en otras aplicaciones o recibiste el mismo mensaje que recibes aquí.
Estoy teniendo grandes problemas para mostrar los registros de mi entidad Product y OrderItems. Esta es una a muchas relaciones.
Agregué registros a la entidad Product sin ningún problema y realicé la entrada OrderItem en la siguiente función:
- (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]; }
Esto parece estar bien y mi mayor problema es mostrar todos los artículos de pedido para cada Producto. La relación Producto ====> Artículo de pedido es: producto y el inverso es órdenes. OrderItems ===> El producto es: pedidos e inverso es producto.
Intento mostrar para 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; }
Sé que el objeto de relación en el producto en el producto es NSSet como a continuación:
@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
He hecho lo mismo en diferentes programas, pero no sé realmente por qué.
¡Cualquier ayuda o consejo sería muy apreciada!