ios - 事件未添加到日历中?

标签 ios objective-c

我正在从服务中获取日期和时间,并且我已将日期和时间合并为一个,然后将其存储到事件日期中但未添加到日历中。 到目前为止,我在这里结合了日期和时间

-(NSDate *)getDateFromService:(NSString *)str{
    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
    //[dateFormatter setDateFormat:@"dd-MM-yyyy"];
    [dateFormatter setDateFormat:@"MM-dd-yyyy"];
    NSDate *dateFromString = [dateFormatter dateFromString:str];
//    return dateFromString;
    NSDate *date = dateFromString;

    // Get the current calendar
    NSCalendar *calendar = [NSCalendar currentCalendar];

    // Split the date into components but only take the year, month and day and leave the rest behind
    NSDateComponents *dateComponents = [calendar components:(NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit) fromDate:date];

    // Build the date formatter
    NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
    [formatter setDateFormat:@"HH:mm:ss"];

    // Convert the string time into an NSDate
    NSDate *time = [formatter dateFromString:timeToBeStore];

    // Split this one in components as well but take the time part this time
    NSDateComponents *timeComponents = [[NSCalendar currentCalendar] components:(NSHourCalendarUnit | NSMinuteCalendarUnit ) fromDate:time];

    // Do some merging between the two date components
    dateComponents.hour = timeComponents.hour;
    dateComponents.minute = timeComponents.minute;

    // Extract the NSDate object again
    NSDate *result = [calendar dateFromComponents:dateComponents];

    // Check if this was what you where looking for
    NSLog(@"%@",result);
    return result;
}

存储到 EventKit

-(void)addToCalenderEvent:(NSString *)eventTitle{
    EKEventStore *store = [EKEventStore new];
    [store requestAccessToEntityType:EKEntityTypeEvent completion:^(BOOL granted, NSError *error) {
        if (!granted) { return; }
        EKEvent *event = [EKEvent eventWithEventStore:store];
        event.title = eventTitle;
//        NSString *atTime=[NSString stringWithFormat:@"%@T%@",dateToBeStore,timeToBeStore];
        NSDate *date = [self getDateFromService:dateToBeStore];
        event.startDate = date; //today
       // event.endDate = [event.startDate dateByAddingTimeInterval:60*60];  //set 1 hour meeting
        event.calendar = [store defaultCalendarForNewEvents];
        NSError *err = nil;
        [store saveEvent:event span:EKSpanThisEvent commit:YES error:&err];
        self.savedEventId = event.eventIdentifier;  //save the event id if you want to access this later
    }];
}

dateToBeStore 是我的服务日期值。 timeToBeStore 是我的服务时间值(value)。

我的服务器值(value)观 eventDate = "12-09-2015"; eventTime = "13:45:00";

dateToBeStore=[NSString stringWithFormat:@"%@",[response valueForKey:@"eventDate"]];
    timeToBeStore=[NSString stringWithFormat:@"%@",[response valueForKey:@"eventTime"]];

可能是什么原因?这段代码有什么问题? 如果我只是单独给出日期,那么工作正常。

最佳答案

In swift  use following code


 func addBookingInformationToCalender()
 {
        let store = EKEventStore()
        store.requestAccessToEntityType(EKEntityType.Event) {(granted, error) in
              if !granted { return }

            let event = EKEvent(eventStore: store)
            event.title = "Tittle"
            event.startDate = start NSDate
            event.endDate =End  NSDate
            event.notes = "Event Notes"

                let structuredLocation = EKStructuredLocation(title: "Location Name")
                let location = CLLocation(latitude: Location.geoCode!.latitude, longitude: Location.geoCode!.longitude)
                structuredLocation.geoLocation = location;
                if #available(iOS 9.0, *) {
                    event.structuredLocation = structuredLocation
                } else {
                    // Fallback on earlier versions
                    //                    event.location = selectedLocation.name!
                    event.setValue(structuredLocation, forKey: "structuredLocation")
                }

            event.calendar = store.defaultCalendarForNewEvents

            do{
                try store.saveEvent(event, span: EKSpan.ThisEvent, commit: true)
            }catch{
                Print("Got error while adding event")
            }
            //            self.savedEventId = event.eventIdentifier //save event id to access `enter code here`this particular event later
        }
    }

关于ios - 事件未添加到日历中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34172594/

相关文章:

ios - 滑动 View Controller ,但不使用 UISwipeGestureRecognizer

ios - SWIFT:动画会改变速度,这是我不想要的

ios - 一张图片到另一张图片大小问题 ios

java - JSON <=> Java 对象映射器,可与 J2objc 很好地转换

iphone - 错误 : The bundle uses a bundle name or display name associated with an Apple app

ios - 共享扩展不显示数据 -- ios

iOS:如何以编程方式从应用程序中的私钥和 x509 证书创建 PKCS12 (P12) keystore ?

java - NSTask 将输出通过管道传输到控制台而不是 NSFileHandle

ios - 在 View 顶部添加固定位置 View

ios - 多值设置未使用默认值初始化