2012-05-30 11 views
5

ist unten:Wie bekomme ich die Objekt-ID von der URL? mein Code

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

dann möchte ich die beanstandete wie folgt erhalten:

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

aber die objID ist gleich Null. etwas falsch? wie geht das ? Danke !

+2

Könnte es sein, dass Sie eine neu erstellte Objekt-ID vor dem Speichern speichern und versuchen, sie nach dem Speichern abzurufen? Da das Objekt zunächst eine temporäre ID hat und beim Speichern eine permanente ID zugewiesen wird, würde dies Ihr Problem erklären. – svena

Antwort

7

Wenn dies Ihr eigentliche Code ist, dann unter der Leitung ist verdächtig

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

Sie einen neuen NSPersistentStoreCoordinator Zuteilung nicht initialisierte, ohne irgendwelche Läden hinzugefügt. Gemäß der Dokumentation wird null zurückgegeben, wenn keine übereinstimmenden Speicher gefunden werden.

Wenn Sie das verwaltete Objektkontext zur Hand haben, sollten folgende arbeiten

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

sonst i mit svena Antwort zustimmen würde.

+0

Es hat gut für mich funktioniert ... –