2015-08-28 74 views
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(); 
       } 
      }); 

回答

0

我定了!問題是我保存了錯誤的標識符。有兩個不同的標識符,「UUID」和「Eventidentifier」。隨着Eventidentifier我的代碼工作正常。

ViewModel.DataManager.InsertCalID(e.Vorstellung.Id, e.Vorstellung.FilmId, newEvent.Eventidentifier); 

new UIAlertView("Erfolg", "Kalendareintrag mit "+EventToDelete.Eventidentifier +" wurde gelöscht", null, "ok", null).Show(); 
}