Проблема в том, что вы создаете массив внутри l oop, поэтому значение перезаписывается в каждой итерации.
Далее вы отправляете запрос на доступ и устанавливаете формат даты (форматер даты в любом случае не используется) ) в каждой итерации, которая является избыточной и должна быть сделана один раз перед l oop тоже.
- (IBAction)AddToCalendar:(id)sender {
NSDateFormatter *formatter = [[NSDateFormatter alloc]init];
[formatter setDateFormat:@"E, d MMM yyyy HH:mm:ss Z"];
EKEventStore* store = [EKEventStore new];
[store requestAccessToEntityType:EKEntityTypeEvent completion:^(BOOL granted, NSError *error) {
if (!granted) return;
NSMutableArray *arrayofCalIDs = [NSMutableArray new];
for (NSDate *date in data.datefromserver) {
EKEvent *event = [EKEvent eventWithEventStore:store];
event.title = @"Event Title";
event.startDate = date; // today
event.endDate = [event.startDate dateByAddingTimeInterval:60*60]; // Duration 1 hr
[event setCalendar:[store defaultCalendarForNewEvents]];
NSError *err = nil;
[store saveEvent:event span:EKSpanThisEvent commit:YES error:&err];
// self->_savedEventId = event.eventIdentifier;
// Store this so you can access this event later
NSString* str = [[NSString alloc] initWithFormat:@"%@", event.eventIdentifier];
[arrayofCalIDs addObject:str];
NSLog(@"check ID: %@",arrayofCalIDs);
}
[[NSUserDefaults standardUserDefaults] setObject:arrayofCalIDs forKey:@"key1"];
}];
}