2010-08-19 4 views
3

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

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

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

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

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

Любые идеи лучше? Или что я делаю неправильно?

+0

Код, который вы опубликовали, не работает, у вас есть «err» и «error». И где вы делаете журнал? – jtbandes

+0

Спасибо, что я отредактирую, чтобы изменить это. Я написал это, чтобы привести пример того, что я делаю. В противном случае это приведет к ошибке компиляции – Derrick

ответ

9

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

Вместо этого, я предполагаю, что вы хотите сделать, это

NSString*identifier=[objURL absoluteString]; 

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

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

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

+0

. Благодаря! – Derrick

+8

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

+0

Спасибо, что указали это. Я добавлю его так, чтобы кто-то, кто читает эту запись, но не раздел комментариев, не пропустит ее ... – Yuji

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