Вопрос по core-data, primary-key, iphone – Первичный ключ для загрузки данных с iPhone

2

Я разрабатываю приложение, которое использует CoreData.

Так в.sqlite Файл, он управляет самим Первичным ключом.

Имя атрибута первичного ключаZ_PK.

Моя проблема в том, что я хочу, чтобы данные из моей таблицы сортировались по возрастанию по первичному ключу.

Я использую этот код

<code>NSSortDescriptor *sort = [[NSSortDescriptor alloc] initWithKey:@"_PK" ascending:YES];
[fetchRequest setSortDescriptors:[NSArray arrayWithObject:sort]];
[sort release];
</code>

Но это не работает.

когда я использую «заголовок» "_PK", он работает отлично

<code>NSSortDescriptor *sort = [[NSSortDescriptor alloc] initWithKey:@"title" ascending:YES];
[fetchRequest setSortDescriptors:[NSArray arrayWithObject:sort]];
[sort release];
</code>

Так есть ли другой способ использовать первичный ключ таблицы?

В этом файле Когда я добавляю какую-то запись, таблица создает первичный ключ для всех записей. Мне просто нужно использовать этот первичный ключ для сортировки моих данных. Sarafaraz Babi
Primary key in Core Data? rohan-patel
Не могли бы вы опубликовать изображение или ваш Xcdatanodel, потому что ваш вопрос немного неясен? Nikita Pestrov
К сожалению. Я думаю, что вы не можете поиграть с этим файлом SQLite в каталоге документов. Его для внутреннего использования Core Data. Правильно ли вы указали документацию по основным данным? rohan-patel
Здравствуйте, Никита, я пишу .Sqlite файл в каталог документов. Sarafaraz Babi

Ваш Ответ

1   ответ
4

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

Итак, почему вы хотите сортировать на основе этого? Я могу придумать несколько причин ...

You want to access the objects in the order in which they were added to the database. However, you can easily do this in several ways.

1a. Вы можете добавить поле к каждой сущности. Вы можете установить его в UUID или в возрастающее целое число.

1б. Вы могли бы иметь сущность, что-то вроде & quot; EntityList & quot; который имеет упорядоченное отношение «один ко многим» с «сущностью».

1c. Вы можете добавить отношение «один к одному» от Entity к себе, а затем просто управлять им как связанным списком. Каждый раз, когда вы добавляете сущность, ставьте ее в конец списка.

Любое из этих решений дает вам возможность доступа к объектам сущности в порядке их добавления.

Or, you really don't care the order you see them, but you want a consistent ordering.

2а. Добавьте атрибут primaryKey и присвойте ему UUID.

2b. Используйте упорядоченное отношение ко-многим.

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

Спасибо, Джоди, у меня есть альтернативное решение для этого. Но я просто хотел знать, возможно ли это или нет? Спасибо за помощь. Sarafaraz Babi

Похожие вопросы