Как лучше сохранить карту одного управляемого объекта для другого, который синхронизируется в Swift? - PullRequest
0 голосов
/ 14 декабря 2018

Вот моя ситуация: у меня есть отправленное уведомление, которое соответствует определенной «тревоге» в моем приложении (объект называется «Тревога»).Объекты AlarmMO являются подклассом NSManagedObject для использования в Базовых данных.Когда я отправляю уведомление пользователю, я хочу, чтобы он мог отложить тревогу, которая, по сути, вызывает функцию объекта Alarm, чтобы творить чудеса.Я подумал об этом в моем главном контроллере представления, реализовав эту функцию:

func userNotificationCenter(_ center: UNUserNotificationCenter, didReceive response: UNNotificationResponse, withCompletionHandler completionHandler: @escaping () -> Void)

Я уже установил свой UITableViewController для принятия протокола UNUserNotificationCenterDelegate.Эта функция вызывается при нажатии действия в уведомлении.Когда эта функция будет вызвана, я смогу получить alarmNotificationIdentifier, используя

let alarmNotificationIdentifier = response.notification.request.identifier

. Этот alarmNotificationIdentifier представляет собой UUID, к которому я привязал определенный объект AlarmMO (который я должен выяснить во время выполнения с помощьюпросто ищем каждый объект AlarmMO для этого UUID в его массиве messagesUuids).Когда у меня есть объект AlarmMO, соответствующий уведомлению, мне нужно получить реальный объект Alarm, соответствующий объекту AlarmMO.Как лучше всего это сделать?Как я могу обеспечить синхронизацию массивов этих двух объектов (у меня есть два массива в верхней части моего ViewController, [AlarmMO] и [Alarm])?

1 Ответ

0 голосов
/ 14 декабря 2018

Я пока не могу комментировать, чтобы запросить более подробную информацию, поэтому сначала постараюсь ответить как можно лучше:

Вам нужны эти два массива AlarmMO и Alarm?Я имею в виду, много ли в них объектов, и вы делаете важные вычисления для каждого из них?

Если нет, то почему бы не использовать словарь типа [AlarmMO : Alarm]?Вы все еще можете получить все объекты AlarmMO и объекты Alarm, когда это необходимо, вызвав youDictionaryVariable.keys -> [AlarmMO] и youDictionaryVariable.values -> [Alarm].

Теперь, если вы хотите соответствующий Alarm объект,использовать словарь: let correspondingAlarmObject = dictionary[AlarmMO]

...