gpt4 book ai didi

ios - 导入 .ics 文件并在日历或 UITableView 中显示

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:02:09 25 4
gpt4 key购买 nike

我从某个网址检索了一个 .ics 文件。我想在我自己的应用程序的日历和/或 ListView 中显示此文件的信息。我查看了 iCal4Objc("https://github.com/cybergarage/iCal4ObjC ") 并解析了如下信息:

   -(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 和日历 View 来说明解析的数据会很痛苦我问我是否存在你们中的一个人知道的框架,它已经可以处理 .ics 文件和显示他们相应地。

如果您有解决这个问题的想法,那么我将不胜感激。

也可以看看我的评论。目前根本不考虑 rrule 属性。但这非常重要,因为它会告诉我事件是否重复,直到它重复等等...

最佳答案

没关系,我自己通过解析 rrule 属性来实现它,就像我对其他属性所做的那样,并构建了一个方法,该方法通过遵循此属性包含的信息来创建我需要的适量对象。好吧,我只是认为这是唯一的方法,因为显然没有用于导入和解析 .ics 文件的框架。当我完成我的项目时,我可能会为有一天可能会遇到这种情况的人试一试。

关于ios - 导入 .ics 文件并在日历或 UITableView 中显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21026546/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com