2012-05-30 2 views
5

мой код ниже:Как получить идентификатор объекта из URL?

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

тогда я хочу, чтобы получить возражали так:

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

но ObjId равна нулю. ничего плохого ? как это сделать ? Спасибо !

+2

Возможно, вы сохраняете только что созданный идентификатор объекта перед сохранением и пытаетесь восстановить его после сохранения? Поскольку объект имеет временный идентификатор сначала и ему будет предоставлен постоянный во время сохранения, это объяснит вашу проблему. – svena

ответ

7

Если это ваш фактический код, то ниже линия сомнительна

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

Вы выделение нового NSPersistentStoreCoordinator, неинициализированный, без каких-либо магазинов добавили к нему. Согласно документации, он будет возвращать нуль, если не найдено подходящих магазинов.

Если у вас есть контекст управляемых объектов под рукой, должно работать

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

иначе я бы согласился с ответом Свена в.

+0

Это сработало для меня ... –

Смежные вопросы