我從某個URL檢索.ics文件。我想在我自己的應用程序中以日曆和/或列表視圖呈現此文件的信息。我看了一下iCal4Objc(「https://github.com/cybergarage/iCal4ObjC」)和解析這樣的信息:導入.ics文件並在日曆或UITableView中顯示
-(NSMutableArray *)getPlanFromURL:(NSURL *)url {
NSMutableArray *planEntries = [[NSMutableArray alloc]init];
NSString *storePath = [self loadICSAndReturnPathFromURL:url];
CGICalendar *parserCalendar = [[CGICalendar alloc]initWithPath:storePath];
for(CGICalendarObject *planObject in [parserCalendar objects]) {
for(CGICalendarComponent *component in [planObject components]) {
for (CGICalendarProperty *icalProp in [component properties]) {
NSString *icalPropName = [icalProp name];
NSLog(@"%@",icalPropName);
if([icalPropName isEqualToString:SUMMARY]) {
[self.summaryArray addObject:[icalProp value]];
}
else if([icalPropName isEqualToString:LOCATION]) {
[self.locationArray addObject:[icalProp value]];
}
else if([icalPropName isEqualToString:CATEGORIES]) {
[self.categoryArray addObject:[icalProp value]];
}
else if([icalPropName isEqualToString:DTSTART]) {
[self.startArray addObject:[icalProp dateValue]];
}
else if([icalPropName isEqualToString:DTEND]) {
[self.endArray addObject:[icalProp dateValue]];
}
}
}
}
for(int i = 0;i<[self.summaryArray count];i++) {
DECalEntry *entry = [[DECalEntry alloc]init];
entry.summary = [self.summaryArray objectAtIndex:i];
entry.roomInformation = [self.locationArray objectAtIndex:i];
entry.category = [self.categoryArray objectAtIndex:i];
entry.startDate = [self.startArray objectAtIndex:i];
entry.endDate = [self.endArray objectAtIndex:i];
if ([entry.category isEqualToString:@"Prüfung"]) {
entry.isExam = true;
}
else entry.isExam = false;
[planEntries addObject:entry];
}
return planEntries;
}
-(NSString *)loadICSAndReturnPathFromURL:(NSURL *)url {
NSURLRequest * urlRequest = [NSURLRequest requestWithURL:url];
NSURLResponse * response = nil;
NSError * error = nil;
NSData * data = [NSURLConnection sendSynchronousRequest:urlRequest
returningResponse:&response
error:&error];
if (error == nil)
{
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *storePath = [NSString stringWithFormat:@"%@/%@", documentsDirectory, @"planData.ics"];
[data writeToFile:storePath atomically:YES];
return storePath;
}
NSLog(@"Error: %@",[error localizedDescription]);
return nil;
}
因爲這不是很乾淨,這將是一個痛苦,也能實現的UITableView並說明所分析的數據日曆視圖我問我是否存在一個框架,你知道哪個已經可以處理.ics文件並相應地顯示它們。
如果你有一個想法如何解決這個問題不那麼複雜和/或用更少的努力,我會非常感激。
也看看我的評論。目前,rrule財產根本不被考慮。但這是非常重要的,因爲它告訴我事件是否重複,直到它重複,等等......
謝謝,我會看看它,並更新這個問題,當我得到第一個結果。 – dehlen
好吧,我看了一下,但對我來說,它看起來並沒有真正幫助我,因爲我仍然需要解析信息,然後構建EKEvent。我面臨的主要問題是.ics文件有一個名爲RRULE的屬性,它定義了應該每隔x天重複約會直到某個日期。解析所有的信息真的很難,然後也考慮這個問題。這就是爲什麼我希望有一個框架,我可以輕鬆地解析/和或說明來自.ics文件的信息 – dehlen
好的...你的問題是關於是否有一個UI組件可以解析和顯示日曆事件...我回答沒有,沒有,但有一個日曆顯示/添加控制。無論如何,很高興你知道你的問題。 –