5

私のコードは以下の通りです:

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はnilです。何か問題がありますか?どうやってするか ?ありがとう !

4

1 に答える 1

9

これが実際のコードである場合、以下の行が疑わしい

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

ストアを追加せずに、初期化されていない新しい NSPersistentStoreCoordinator を割り当てています。ドキュメントによると、一致するストアが見つからない場合は nil が返されます。

管理対象オブジェクトのコンテキストが手元にある場合は、次のように動作するはずです

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

それ以外の場合は、svena の返信に同意します。

于 2012-07-20T14:59:31.110 に答える