0
我有一個問題,通過eventfromIdentifier從Eventstore獲取日曆條目。保存一個事件工作正常,但是當我嘗試從EventStore檢索事件時,它返回null。我在stackoverflow上檢查了其他問題,沒有人修復它。我希望你能幫忙。Xamarin.iOS&Eventkit
功能保存日曆條目,工作正常。我得到UUID並將其保存到本地數據庫。
private void createOneCalendarEntry(VorstellungEventArgs e) {
EKEvent newEvent = EKEvent.FromStore(CalendarHelper.Current.EventStore);
newEvent.StartDate = DateHelper.DateTimeToNSDate(e.Vorstellung.Beginn ?? DateTime.Now);
DateTime StartTime = e.Vorstellung.Beginn ?? DateTime.MinValue;
var Duration = e.Vorstellung.Dauer ?? 90;
newEvent.EndDate = DateHelper.DateTimeToNSDate(StartTime.AddMinutes(Duration));
newEvent.Title = e.Vorstellung.PublikationsTitel;
newEvent.Notes = e.Vorstellung.ZeitUndOrtString;
newEvent.Calendar = CalendarHelper.Current.EventStore.DefaultCalendarForNewEvents;
NSError a;
try
{ // Save Note to Calendar to get UUID
CalendarHelper.Current.EventStore.SaveEvent(newEvent, EKSpan.ThisEvent, true, out a);
if (a != null)
{
new UIAlertView("Err Saving Event", a.ToString(), null, "ok", null).Show();
return;
}
else
{ // Test: Show UUID
new UIAlertView(newEvent.UUID, "wurden zum Kalendar hinzugefügt", null, "ok", null).Show();
ViewModel.DataManager.InsertCalID(e.Vorstellung.Id, e.Vorstellung.FilmId, newEvent.UUID);
}
}
catch
{
new UIAlertView("Fehler", "Kalendareinträge wurden nicht erstellt", null, "ok", null).Show();
}
finally
{
}
}
這裏來的函數調用條目並刪除它們。 「ViewModel.DataManager.getCalID(e.Vorstellung.Id,e.Vorstellung.FilmId)」給了我創建好的UUID。
private void deleteEventfromCalandar(VorstellungEventArgs e)
{
NSError a;
// Get UUID from local Database an get Event from UUID THIS RETURNS ALWAYS NULL
EKEvent EventToDelete = CalendarHelper.Current.EventStore.EventFromIdentifier(ViewModel.DataManager.getCalID(e.Vorstellung.Id, e.Vorstellung.FilmId));
// Delete current event from calendar
CalendarHelper.Current.EventStore.RemoveEvent(EventToDelete, EKSpan.ThisEvent,true, out a);
new UIAlertView("Erfolg", "Kalendareintrag mit "+EventToDelete.UUID+" wurde gelöscht", null, "ok", null).Show();
}
這裏Eventstore,從Xamarin doku
class CalendarHelper
{
public static CalendarHelper Current
{
get { return current; }
}
private static CalendarHelper current;
public EKEventStore EventStore
{
get { return eventStore; }
}
protected EKEventStore eventStore;
static CalendarHelper()
{
current = new CalendarHelper();
}
protected CalendarHelper()
{
eventStore = new EKEventStore();
}
}
而且是我的應用程序複製有權日曆
CalendarHelper.Current.EventStore.RequestAccess(EKEntityType.Event,
(bool granted, NSError e) =>
{
if (granted)
{
}
else
{
new UIAlertView("Access Denied", "user Denied Access to Calendar Data", null, "ok", null).Show();
}
});