2012-05-30 24 views
5

mi código es el siguiente:cómo obtener el objectID de la url?

NSURL *urlID = [objID URIRepresentation]; 
    NSString *strID = [urlID absoluteString]; 
    NSDictionary *infoDict = [NSDictionary dictionaryWithObjectsAndKeys:strID, @"objectID", nil]; 
    localNotification.userInfo = infoDict; 

entonces quiero conseguir el opuesto de esta manera:

NSString *strID = [notification.userInfo objectForKey:@"objectID"]; 
NSURL *urlID = [[NSURL alloc] initWithString:strID]; 
NSManagedObjectID *objID = [[NSPersistentStoreCoordinator alloc] managedObjectIDForURIRepresentation:urlID]; 

pero el objID es nula. nada malo ? como hacer eso ? gracias !

+2

¿Podría ser que está almacenando una ID de objeto recién creada antes de guardarla e intentando recuperarla después de guardarla? Como el objeto tiene una ID temporal al principio y se le otorgará una permanente durante el guardado, eso explicaría su problema. – svena

Respuesta

7

Si esta es tu código real, entonces la línea de abajo es sospechoso

NSManagedObjectID *objID = [[NSPersistentStoreCoordinator alloc] managedObjectIDForURIRepresentation:urlID]; 

está asignando un nuevo NSPersistentStoreCoordinator, sin inicializar, sin ningún tipo de tiendas añadieron a la misma. Según la documentación, devolverá nulo si no se encuentran tiendas coincidentes.

Si tiene el contexto objeto administrado a mano, siguiendo debería funcionar

NSManagedObjectID *objId = [[[self managedObjectContext] persistentStoreCoordinator] managedObjectIDForURIRepresentation:urlID]; 

de lo contrario estaría de acuerdo con la respuesta de svena.

+0

Me funcionó bien ... –