AVISO: Cualquier pregunta que no cumpla ninguno de estos criterios podrá ser borrada sin previo aviso.

0
1

Hola a todos,

Me estoy iniciando en esto de iOS y Core Data y no que que me pasa que con Core Data me doy muchos cabezados en la pared y no avanzo.

Bueno me explico, tengo dos Entidades una de ellas llamada Users y la otra Progress, dentro de Users tengo userName y dentro de Progress tengo game_0_level_1 que es donde guardo un Timer y un currentUser que es un BOOL que lo uso para saber si es el usuario activo en ese momento. Entonces en Users tengo una relación llamada usersToProgress con To-Many Relationship activo y Delete Rule Nullify. Esta es inversa con progressToUsers que tengo en Progress

Añado una imagen para ver como tengo el xcdatamodeld

alt text

Lo que intento hacer es, averiguar que usuario tiene el currentUser en YES y poder sacar el game_0_level_1 y si no tiene nada o es superior al nuevo, editarlo por el nuevo tiempo.

Bien no se que hago que no encuentro la manera de hacer esto, he buscado en foros en ingles pero o no lo entiendo bien o no es lo que busco.

Me pregunto si me podríais hechar una mano con esto, llevo un par de semanas que cuanto mas intento mirarlo mas me pierdo.. estoy a la espera de un Libro, Core Data para iOS que esta en castellano y a ver si me puedo aclarar porque toy mas torpe ya de lo normal.

Muchas gracias de antemano!

preguntado 23 Abr '12, 16:25

murb83's gravatar image

murb83
3161014

editó 24 Abr '12, 11:15


Hola,

Trabajando sobre tu modelo, creo que para encontrar el usuario tienes que hacer una NSFetchRequest, de esta forma:

NSFetchRequest * request = [[NSFetchRequest alloc] initWithEntityName:@"Progress"];
    request.predicate = [NSPredicate predicateWithFormat:@"currentUser.boolValue = YES"];
    NSArray * resultados = [MAN_OBJ_CTXT executeFetchRequest:request error:nil];

    Progress * progress = [resultados objectAtIndex:0];

Lo del objectAtIndex:0 lo hago suponiendo que únicamente un progreso tendrá puesto el currentUser a YES.

Una ves que tengas el progreso, acceder al resto de atributos y determinar si el tiempo es menor que el anterior creo que es sencillo.

Un saludo.

EDICION; Es importante que si no usas ARC añadas des pues del código de antes la siguiente linea.

[request release];
enlace permanente

respondido 24 Abr '12, 11:24

ManueGE's gravatar image

ManueGE
3.1k284260

editó 24 Abr '12, 12:53

Vale, parece que lo estoy cogiendo, en vez de Progress * progress he hecho Users * users, no se porque, pero puedo acceder a game_0_level_1 y currentUser de la Entidad Progress.

En principio genial ^^ Gracias!

(24 Abr '12, 12:56) murb83

ManueGE Es increíble tu con cuatro sencillas lineas me has quitado todo un dolor de cabeza jeje mira que he llegado a probar cosas... ya casi me estaba dando por vencido ^^ repito Muchas Gracias!

Uso ARC pero va bien saberlo ^^

(24 Abr '12, 13:04) murb83

Una cosa, perdona la molestia, como hago para sacar el "userName" de la Entidad Users una vez ha encontrado el YES?

(24 Abr '12, 14:45) murb83
1

progress.progressToUsers.userName

(24 Abr '12, 15:07) ManueGE
1

Pues solo con eso ni idea. De todas formas, esto es otra pregunta. Si estás interesado, deberías abrir otra pregunta, poner que te pasa y a ser posible poner algo de código para que se peuda saber que es lo que pasa, porque con la info que das poco se puede hacer. Saludos.

(24 Abr '12, 15:27) ManueGE

Gracias! funciona!

Ya lo he arreglado, fallo mio perdona.

(24 Abr '12, 15:31) murb83
mostrando 5 de 6 mostrar todos
Tu respuesta:
Activar/desactivar vista previa