2012-05-30 93 views
5

我的代碼如下:如何從url獲取objectID?

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

難道是你保存之前存儲了一個新創建的對象ID,並試圖保存後檢索它?由於對象最初有一個臨時ID,並且在保存期間將被授予永久ID,這可以解釋您的問題。 – svena

回答

7

如果這是你的實際代碼,然後在下面的線爲犯罪嫌疑人

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

您分配一個新的NSPersistentStoreCoordinator,未初始化的,沒有任何商店添加到它。根據文檔,如果找不到匹配的商店,它將返回零。

如果你有得心應手的管理對象方面,下面應該工作

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

否則我會跟svena的答覆同意。

+0

它對我來說效果不錯... –