NSManagedObject идентификационный номер - PullRequest
0 голосов
/ 30 ноября 2011

Хорошо, похоже, что я задаю вопрос noob (может быть, я и только что упустил из виду важные детали), но я ищу "отличительное" число / атрибут для общего NSManagedObject, который я мог бы использовать как идентификационный номер (я не могу использовать имя b / c. Я хочу разрешить пользователю создавать объекты с одинаковыми именами). Если этого не существует, пожалуйста, объясните, как я бы воссоздал это. Я понимаю, что я мог бы просто добавить атрибут для этого и увеличить статическую переменную (например, currentId), но если я это сделаю, я должен рассмотреть вопрос об удаляемой сущности, тогда как логически поместить следующую вставленную сущность в этот индекс, а затем вернуть до последнего индекса.

Ответы [ 3 ]

0 голосов
/ 30 ноября 2011

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

NSManagedObjectId похож на URL с уникальным GUID.Если вам нужен какой-то автоматически увеличивающийся идентификатор, вам придется справиться с этим самостоятельно, очевидно, есть много разных способов сделать это.Вы можете иметь отдельную сущность, которая хранит последний назначенный идентификатор и читать его каждый раз, когда вы создаете новую запись, увеличиваете значение, используете его в качестве нового идентификатора и увеличиваете сохраненное значение.Это решит проблему удаления, если вы не хотите, чтобы идентификатор использовался повторно.Здесь есть очевидные проблемы параллелизма, которые вам, возможно, придется решить.Другим подходом может быть сохранение идентификатора в файле в файловой системе или в NSUserDefaults, просто обязательно учитывайте параллелизм и не назначайте случайно один и тот же идентификатор дважды.

0 голосов
/ 30 ноября 2011

Похоже, что вы можете использовать строку идентификации NSNumber на ваших сущностях, а затем просто отслеживать, сколько у вас объектов (сохраняя переменную или выбирая максимальное значение из вашего хранилища).

Здесь я нашел несколько примеров, которые могут помочь вам в достижении вашей цели.

ссылка

0 голосов
/ 30 ноября 2011

Существует метод objectID для NSManagedObjects, хотя я не верю, что они создаются в любом порядке.

Лично я бы просто использовал и атрибут ID.Я не понимаю, почему удаление может вызвать проблемы.Идентификатор просто будет скрыт за кулисами, и не будет никакой реальной причины показывать его пользователю, верно?

...