Как я могу получить ObjectID NSManagedObject, полученного через отношение? - PullRequest
0 голосов
/ 23 апреля 2011

У меня есть результат из запроса по ключевому слову. Каждый возвращаемый объект ключевого слова имеет отношение «многие ко многим» с другим объектом. (назовите это B)

Что мне интересно, есть ли способ использовать ключевое слово resultset и находить только идентификаторы управляемого объекта для B сущностей без необходимости извлекать их в память? В настоящее время я делаю это:

NSMutableArray *objIdList = [[NSMutableArray alloc] init];
NSArray *keywordResultSet = <results from initial keyword query>;
for ( Keyword *keyword in keywordResultSet )
{
    B *mo = [keyword valueForKey: <relationship>];
    [objIdlist addObject: [mo objectID]];
}
// additional sorting of result set

Проблема в том, что СУПЕР медленный, когда я делаю это. Есть ли способ получить только ObjectID?

1 Ответ

0 голосов
/ 23 апреля 2011

Первое, что нужно спросить, если вам вообще нужны objectID.Многие новички в Core Data считают, что идентификаторы объектов подобны ключам в реляционной базе данных.Это не так.ObjectID нужны только тогда, когда вам нужно сослаться на объекты в другом постоянном хранилище.В противном случае, они не принесут вам никакой пользы.Я считаю крайне маловероятным, учитывая вашу относительную неопытность с Базовыми данными, что вам на самом деле нужно сначала получить objectID.

Для любого другого атрибута, кроме objectID, вы можете выполнить выборку по атрибуту и ​​установить тип результата в словарь, который производит облегченную выборку, которая возвращает только массив словарей, содержащих значение одного искомого атрибута.Вы не можете сделать это с объектными идентификаторами, потому что объектные идентификаторы - это не строго говоря атрибуты управляемых объектов, а ссылки на них в определенном постоянном хранилище.

...