Ios 两个“;日历“;iPad上列出的条目-can';不要使用EventKit写入日历

Ios 两个“;日历“;iPad上列出的条目-can';不要使用EventKit写入日历,ios,ios5,xamarin.ios,eventkit,Ios,Ios5,Xamarin.ios,Eventkit,我的iOS应用程序与设备的日历集成。在我的iPad上,当我查看日历应用程序并点击左上角的日历按钮选择要显示的日历时,我会看到一个名为“calendar”的条目。在我的应用程序中,当我循环浏览每个可用日历时,下面的代码“日历”会列出两次。一个是CalDAV,用于类型,另一个是Local。我无法在其中一个中创建日历条目,我相信是“本地”的,不知道为什么 为什么我在iCal应用程序中没有看到“日历”列两次,却看到它列两次 public static List<string>

我的iOS应用程序与设备的日历集成。在我的iPad上,当我查看日历应用程序并点击左上角的日历按钮选择要显示的日历时,我会看到一个名为“calendar”的条目。在我的应用程序中,当我循环浏览每个可用日历时,下面的代码“日历”会列出两次。一个是CalDAV,用于类型,另一个是Local。我无法在其中一个中创建日历条目,我相信是“本地”的,不知道为什么

为什么我在iCal应用程序中没有看到“日历”列两次,却看到它列两次

        public static List<string> Calendars
    {
        get
        {
            var calendars = new List<string>();

            var ekCalendars = EventStore.Calendars;
            if (ekCalendars != null && ekCalendars.Length > 0)
            {
                foreach (EKCalendar cal in ekCalendars)
                {
                    if (cal.AllowsContentModifications)
                        calendars.Add(cal.Title);
                }
                calendars.Sort();
            }
            return calendars;
        }
    }
公共静态列表日历
{
得到
{
var calendars=新列表();
var ekCalendars=EventStore.Calendars;
if(ekCalendars!=null&&ekCalendars.Length>0)
{
foreach(ekCalendars中的EKCalendar cal)
{
如果(cal.AllowsContentModifications)
日历。添加(日历标题);
}
calendars.Sort();
}
返回日历;
}
}
为什么我在iCal应用程序中没有看到“日历”列两次,却看到它列两次

        public static List<string> Calendars
    {
        get
        {
            var calendars = new List<string>();

            var ekCalendars = EventStore.Calendars;
            if (ekCalendars != null && ekCalendars.Length > 0)
            {
                foreach (EKCalendar cal in ekCalendars)
                {
                    if (cal.AllowsContentModifications)
                        calendars.Add(cal.Title);
                }
                calendars.Sort();
            }
            return calendars;
        }
    }
FWIW您正在寻找一个新的

至于看它两次?我无法使用自己的设备(运行iOS 5.1)复制此内容,即使没有配置任何电子邮件地址(或日历)。我(在iCal中)得到的是iCloud(分为家庭工作)和其他(生日)日历。也许是因为我启用了iCloud

使用一些快速的黑客代码,家庭和工作都是CalDav(仅限设备),生日是
生日(包括设备和模拟器),另一个是日历(包括本地设备和模拟器)但在iCal中不可见

因此,肯定有一个额外的,未记录(到目前为止)
本地
日历

为什么我在iCal应用程序中没有看到“日历”列两次,却看到它列两次

        public static List<string> Calendars
    {
        get
        {
            var calendars = new List<string>();

            var ekCalendars = EventStore.Calendars;
            if (ekCalendars != null && ekCalendars.Length > 0)
            {
                foreach (EKCalendar cal in ekCalendars)
                {
                    if (cal.AllowsContentModifications)
                        calendars.Add(cal.Title);
                }
                calendars.Sort();
            }
            return calendars;
        }
    }
FWIW您正在寻找一个新的

至于看它两次?我无法使用自己的设备(运行iOS 5.1)复制此内容,即使没有配置任何电子邮件地址(或日历)。我(在iCal中)得到的是iCloud(分为家庭工作)和其他(生日)日历。也许是因为我启用了iCloud

使用一些快速的黑客代码,家庭和工作都是CalDav(仅限设备),生日是
生日(包括设备和模拟器),另一个是日历(包括本地设备和模拟器)但在iCal中不可见


因此,肯定有一个额外的,未记录(到目前为止)
本地
日历。

我可以确认我也看到了这一点。调试打印的详细信息:

EKCalendar{title=Calendar;type=Exchange;allowsModify=YES;color=#0E61B9;}, EKCalendar{title=Calendar;type=Local;allowsModify=YES;color=#F64F00;}

更多信息: 我有一个类似于传统日历应用程序的应用程序,允许您选择日历,然后显示该日历的条目。通过调试和使用我的应用程序,两个“日历”应用程序中都会发生相同的事件。“重复”日历在日历应用程序中不可见。当我在iPhone上添加一个GMAIL日历来测试我的应用程序中的多个日历时,同样的副本也出现了。“复制”日历不会出现在模拟器中。我在以前的IOS版本上进行了广泛的多日历测试,以前从未见过这种情况。。。IOS 5.1有新功能吗

我搜索了IOS开发板,只有一个发布了相同的问题。我回答说,我会在这里告诉你我发现了什么

如果你有兴趣。。。下面是过滤掉它的代码

EKEventStore *eventStore = [[EKEventStore alloc] init];
for (EKCalendar *cal in eventStore.calendars) {
    if (cal.type != EKCalendarTypeLocal) {
         // do something
    }
}

我可以证实我也看到了这一点。调试打印的详细信息:

EKCalendar{title=Calendar;type=Exchange;allowsModify=YES;color=#0E61B9;}, EKCalendar{title=Calendar;type=Local;allowsModify=YES;color=#F64F00;}

更多信息: 我有一个类似于传统日历应用程序的应用程序,允许您选择日历,然后显示该日历的条目。通过调试和使用我的应用程序,两个“日历”应用程序中都会发生相同的事件。“重复”日历在日历应用程序中不可见。当我在iPhone上添加一个GMAIL日历来测试我的应用程序中的多个日历时,同样的副本也出现了。“复制”日历不会出现在模拟器中。我在以前的IOS版本上进行了广泛的多日历测试,以前从未见过这种情况。。。IOS 5.1有新功能吗

我搜索了IOS开发板,只有一个发布了相同的问题。我回答说,我会在这里告诉你我发现了什么

如果你有兴趣。。。下面是过滤掉它的代码

EKEventStore *eventStore = [[EKEventStore alloc] init];
for (EKCalendar *cal in eventStore.calendars) {
    if (cal.type != EKCalendarTypeLocal) {
         // do something
    }
}

如果已启用iCloud,则不会看到本地日历

我相信这是为用户设计的。当您打开iCloud时,它会将您的本地日历合并到iCloud中。一旦启用iCloud,iOS将对用户隐藏本地日历,甚至是您通过编程创建的日历,这样他们就不会在本地日历中创建事件,然后想知道为什么他们会与iCloud同步

在他们的书中查看EKVentKit中的体面教程


但是,我发现没有任何书籍或教程明智地谈论在iCloud或本地创建日历,以及打开和关闭iCloud时出现的问题…

如果您启用了iCloud,您将看不到本地日历

我相信这是为用户设计的。当你