Как однозначно идентифицировать nsmangedobject со строкой? - PullRequest
3 голосов
/ 19 августа 2010

Я использую данные Core и мониторинг региона. Единственный способ различить контролируемые регионы - использовать NSString для идентификатора. Я хотел бы использовать NSManagedObjectID, но я не могу заставить его работать.

Что я пробовал:

NSURL *objURL = [managedObjectID URIRepresentation];
NSError *err;
NSString *identifier = [NSString stringWithContentsOfURL:myURL
                                                encoding:NSASCIIStringEncoding
                                                   error:&err];

ошибка, которую я получаю:

The operation couldn’t be completed. (Cocoa error 256.)

Есть идеи о лучшем способе? Или что я делаю не так?

1 Ответ

9 голосов
/ 19 августа 2010

Вы не должны получать содержимое URI NSManagedObjectID.stringWithContentsOfURL:encoding:error: пытается загрузить ресурс, указанный URI;он использует соответствующие операции в зависимости от того, является ли URI http или file или т. д. Но он не знает, как обращаться с NSManagedObjectID URI, и это не то, что вы хотите сделать в любом случае.

Вместо этого, я думаю, вы хотите сделать следующее:

 NSString*identifier=[objURL absoluteString];

Это дает строковое представление URL.

Я добавлю комментарий Маркуса, чтобы все заметили:

Имейте в виду, что objectID может и действительно изменяется, особенно когда происходит миграция.Не полагайтесь на то, что это значение будет согласованным между одним запуском приложения и следующим.

...