Сортировка и настройка по умолчанию в списке CoreData - PullRequest
0 голосов
/ 21 сентября 2011

Мое приложение iOS использует CoreData для хранения многих вещей и NSUserDefaults для хранения других вещей, для которых CoreData было бы излишним.

Я собираюсь упростить это, так что потерпите меня (Примечание: для примера рассмотрим кредитные карты). Когда мое приложение загружается, оно отображает список сохраненных кредитных карт. Теперь, когда каждая карта добавлена, ей присваивается номер 1-10 (назовем его cardNum), который остается с картой в течение всей ее жизни.

Итак, мы добавляем одну карту и присваиваем ей № 1. Добавляем еще одну карту и присваиваем ей № 2. Еще один ... # 3. Мы можем установить карту по умолчанию, которая будет выделена при запуске, нажав на нее. Он сохраняет cardNum как cDefault до NSUserDefaults, чтобы отслеживать его (эффективно устанавливая карту X в качестве карты по умолчанию).

(грубый чертеж табличного вида)

//cDefault is 2
------------
1 - Card1
------------
2 - Card2 (cDefault)
------------
3 - Card3
------------
4 - Card4
------------

Допустим, мы присвоили cDefault 2, а затем на следующей неделе удалили эту карту. При удалении мне нужно автоматически назначить одну из других карт в качестве карты по умолчанию.

(грубый чертеж вида таблицы ПОСЛЕ удаления карточки 2 - обратите внимание, как cDefault все еще установлен ...)

//cDefault is still 2
------------
1 - Card1
------------
3 - Card3
------------
4 - Card4
------------

Поэтому мой вопрос заключается в том, как при удалении установить другую карту как cDefault (то есть, если бы это был массив, я бы, вероятно, установил для нового значения по умолчанию значение cDefault для любой карты в indexPath.row==0, но я я не уверен, смогу ли я сделать это, используя CoreData)

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

Заранее большое спасибо. Джеймс

1 Ответ

1 голос
/ 21 сентября 2011

Во-первых, я не понимаю, почему вы должны отделять определенную информацию от ваших управляемых объектов ... Я бы определил свойство BOOL , например, " подсветка " в классе Cardи обрабатывать все ваши вещи в основных данных ... это звучит более ООП для меня: P Во-вторых, я не пробовал раньше, но вы можете подписаться на NSNotificationCenter и слушать NSManagedObjectContextDidSaveNotification , это уведомление содержит userInfo словарь с ключом с именем NSDeletedObjectsKey , который должен содержать набор удаленных объектов (карточек), в вашем селекторе вы можете написать часть логики для обновленияобъекты в магазине (то есть, установите для свойства " подсветка " значение ДА для первой карты, например) ... этот подход хорош, потому что может быть размещен в любом месте вашегокод, в любом случае самое простое и очевидное место для обработки обновления, где вы удаляете карту.

...