Возникла проблема с изменениями в EKReminders, которые синхронизируются только с моим приложением, а не с iOS.IOS

Программируем под IOS
Ответить
Anonymous
 Возникла проблема с изменениями в EKReminders, которые синхронизируются только с моим приложением, а не с iOS.

Сообщение Anonymous »

Я использую iOS 26.1 Beta RC 1
У меня есть приложение, которое извлекает напоминания пользователя после получения разрешения. То же приложение также может обновлять дату выполнения.
Сегодня я заметил, что приложение «Напоминания» неточно отражает новую дату выполнения EKReminders, установленную в моем приложении.
Странно то, что при получении напоминаний через EKEventStore я получаю ожидаемые сроки выполнения. Итак, похоже, что существует локальная копия EKEventStore, которую мое приложение обновляет и на которую ссылается, и которая не синхронизируется обратно с EKEventStore, которое использует приложение «Напоминания». Несмотря на это, обновления состояния, похоже, надежно синхронизируются с кешем моего приложения, когда что-то меняется в приложении «Напоминания».
Обновления событий календаря работают в обоих направлениях.
Как я обновляю напоминания:

Код: Выделить всё

func scheduleReminder(_ reminder: EKReminder, to date: Date) throws {
reminder.dueDateComponents = Calendar.current.dateComponents(
[.year, .month, .day, .hour, .minute], from: date
)
try eventStore.save(reminder, commit: true) // stable EKEventStore
recordChange()
}
Как их получить:

Код: Выделить всё

//...
// Fetch scheduled reminders
group.enter()
let scheduledPredicate = store.predicateForIncompleteReminders(
withDueDateStarting: Date.distantPast, ending: Date.distantFuture,
calendars: selectedLists
)
store.fetchReminders(matching: scheduledPredicate) { reminders in
let scheduled = (reminders ?? []).filter { $0.dueDateComponents != nil }
allReminders.append(contentsOf: scheduled)
group.leave()
}

// Fetch unscheduled reminders
group.enter()
let unscheduledPredicate = store.predicateForIncompleteReminders(
withDueDateStarting: nil, ending: nil, calendars: selectedLists
)

store.fetchReminders(matching: unscheduledPredicate) { reminders in
let unscheduled = (reminders ?? []).filter { $0.dueDateComponents == nil }
allReminders.append(contentsOf: unscheduled)
group.leave()
}
//...
Я создаю и использую только один экземпляр EKEventStore. Кто-нибудь знает, что может пойти не так?

Подробнее здесь: https://stackoverflow.com/questions/798 ... -and-not-b
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «IOS»