首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Reminders.app双向同步逻辑

Reminders.app双向同步逻辑
EN

Stack Overflow用户
提问于 2013-05-12 22:19:11
回答 2查看 260关注 0票数 3

我希望我的应用程序与Reminders.app同步。(我的应用程序使用核心数据)

我已经做了一个原型,它可以工作,但是有一些bug我想不通。

现在我的同步算法是这样的:

1.监听EKEventStoreChangedNotification通知并在调用sync时进行同步

2.首先,我迭代我的本地日历,如果它们不存在于Reminders.app中,我将添加它们。

这是一个非常糟糕的设计,因为如果我在Reminders.app中删除了一个日历,如果它被添加到我的应用程序中,它会被重新添加到Reminders.app中。如果知道日历是否已被删除,将会更好。

3.然后迭代来自Reminders.app的每个日历,如果这个日历不存在于我的本地记录中,我将它们添加到local.app中。如果它确实存在,那么我将更新它的标题。

4.我正在从我的EKEventStore获取所有提醒

5.我遍历了所有的本地提醒,如果它们不存在于Reminders.app中,我将添加它们。

再说一次删除的问题--与日历删除相同的故事。

6.我正在遍历所有的Reminders.app提醒,如果它们不存在于我的应用程序中,我会将它们添加到我的local.app中。如果它们确实存在,我会更新所有的值。

一切都很好,直到我遇到这个删除问题。我看到EKObject有一些方法可以帮助我,但我不能理解它们。我如何正确地做到这一点,有什么我可以做的优化?

EN

回答 2

Stack Overflow用户

发布于 2013-05-13 00:53:51

如何跟踪你在.plist中安排的提醒呢?因此,如果您的算法正在检查.plist中缺少的内容,并且如果它显示已经添加到.plist中,但不在日历中,这意味着它被删除了。

代码语言:javascript
复制
  //Create dictionary that keeps track of your reminders

NSMutableDictionary *dictionary = [self remindersDictionary];

[dictionary setValue:local.fireDate forKey:title];
[dictionary setValue:@"TRUE" forKey:addedToReminders];

[plistDictionary setValue:dictionary forKey:@"reminders"];
[plistDictionary writeToFile:plistPath atomically:YES];

+(NSMutableDictionary *)remindersDictionary
{
NSString *searchPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)objectAtIndex:0];

plistPath = [searchPath stringByAppendingPathComponent:@"settings.plist"];
plistDictionary = [NSMutableDictionary dictionaryWithContentsOfFile:plistPath];
NSMutableDictionary *dictionary = [plistDictionary valueForKey:@"reminders"];

return dictionary;

}
票数 0
EN

Stack Overflow用户

发布于 2013-05-15 07:49:47

你有date changed-property或类似的东西吗?这将使事情变得更容易。

理想情况下,您可以将呼叫被删除的信息保存在某个地方。然后-在同步时-你可以检查日历(你要添加的)最近是否被删除。如果是这种情况,您可以删除本地日历,也可以删除要删除的信息。因此,列表将保持干净,除非您删除了一个项目,并且该项目已成功同步到对应项目。

或者,如果你想按日期来做,你可以比较lastSyncedDatecalendarModifiedDate (只有两个例子)。但这并不是一个很好的解决方案。你必须考虑时区,时间变化和用户与时间的交互。设置已更改。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16508307

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档