首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >用目标C创建ICS

用目标C创建ICS
EN

Stack Overflow用户
提问于 2014-04-29 08:40:59
回答 1查看 783关注 0票数 3

我正在为我大学的学生写一个应用程序。此时,我希望将时间表中的课程导出为ics-文件。我已经写了一些与csv有关的东西--文件,但现在我想要同样的东西用于ics。问题是,我的Mac上的iCal不希望从下面的代码中创建应用程序创建的ics-文件:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    -(NSURL*)getFileUrl
{
    NSString *docsPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
    NSString *filePath = [docsPath stringByAppendingPathComponent:[NSString stringWithFormat:@"Stundenplan-%@.ics", _MatrNr]];
    NSURL *fileUrl     = [NSURL fileURLWithPath:filePath];


    NSError *error = nil;
    [[self getICSData] writeToURL:fileUrl atomically:YES];
    if (error) {
        NSLog(@"Error while writing to File: %@", [error localizedDescription]);
    }

    return fileUrl;
}

-(NSData*)getICSData
{
    NSMutableString *erg = [[NSMutableString alloc] init];
    NSDate *aktDatum = [NSDate date];

    [erg appendString:[NSString stringWithFormat:@"BEGIN:VCALENDAR\nVERSION:2.0\nPRODID:-//www.htw-dresden.de//iOS//DE\nMETHOD:PUBLISH\n"]];


    for (Stunde *this in _daten) {
        NSString *titel = [this.titel stringByReplacingOccurrencesOfString:@"," withString:@"\\, "];
        NSString *dozent = [this.dozent stringByReplacingOccurrencesOfString:@"," withString:@"\\, "];

        NSString *uuid = [[NSUUID UUID] UUIDString];

        [erg appendString:[NSString stringWithFormat:@"BEGIN:VEVENT\nUID:%@\n", uuid]];
        [erg appendString:[NSString stringWithFormat:@"DTSTART:%@T%@Z\n",[self nurTagFromDate:this.anfang], [self nurUhrzeigFromDate:this.anfang]]];
        [erg appendString:[NSString stringWithFormat:@"DTEND:%@T%@Z\n",[self nurTagFromDate:this.ende], [self nurUhrzeigFromDate:this.ende]]];
        [erg appendString:[NSString stringWithFormat:@"LAST-MODIFIED:%@T%@Z\nSEQUENCE:0\nSTATUS:CONFIRMED\n", [self nurTagFromDate:aktDatum], [self nurUhrzeigFromDate:aktDatum]]];
        [erg appendString:[NSString stringWithFormat:@"SUMMARY:%@\nDESCRIPTION:%@\nLOCATION:%@\nEND:VEVENT\n", titel, dozent, this.raum]];
    }

    [erg appendString:@"END:VCALENDER"];

    NSData *ret = [erg dataUsingEncoding:NSUTF8StringEncoding];

    return ret;
}

在getFileUrl中,我希望将一个URL返回到在那里创建的文件。这个函数调用经过我的数组(_daten)的getICSData函数,并为每个Stunde对象创建这个ics-“代码”。为了获得帮助,我使用了以下NSDate格式函数:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
-(NSString*)nurTagFromDate:(NSDate*)date
{
    NSDateFormatter *nurTag = [[NSDateFormatter alloc] init];
    [nurTag setDateFormat:@"yyyyMMdd"];
    return [nurTag stringFromDate:date];
}

-(NSString*)nurUhrzeigFromDate:(NSDate*)date
{
    NSDateFormatter *nurTag = [[NSDateFormatter alloc] init];
    [nurTag setDateFormat:@"HHmmss"];
    return [nurTag stringFromDate:date];
}

作为输出,我得到如下内容:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//www.htw-dresden.de//iOS//DE
METHOD:PUBLISH
BEGIN:VEVENT
UID:CCCAC9B3-E056-47E3-A63B-F2FE2C3BA454
DTSTART:20140318T111000Z
DTEND:20140318T124000Z
LAST-MODIFIED:20140429T182723Z
SEQUENCE:0
STATUS:CONFIRMED
SUMMARY:Internet-Technologien I
DESCRIPTION:Vogt\, J.
LOCATION:Z 254
END:VEVENT
.
.
.
END:VCALENDER

但我Mac的日历应用不想打开文件..。

如果你们中的一些人有一个想法,那就太好了:)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-04-29 08:54:29

替换这一行:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[erg appendString:@"END:VCALENDER"];

在这方面:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[erg appendString:@"END:VCALENDAR"];

注意VCALENDAR中的错误。

您可能会发现这个iCal file validator很有用。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23370498

复制
相关文章
多目标追踪器:用OpenCV实现多目标追踪(C++/Python)
在本文中,我们将谈到如何用 OpenCV 的多目标追踪API,通过使用 MultiTracker 类来实现。我们将分享用 C++ 和用 Python 实现的代码。
AI研习社
2018/11/22
3.7K0
南大ics面试记录
由于自己水平比较菜,就只敢报个软件所,不敢报lambda,4月份我投了自己的简历,当时不会写statement,statement就写了大概100多个字,太水了2333,然后5月24号通知我去面试,5月25号参加的面试.由于南大是强委员会的学校,所以说组面是比较轻松愉快的,也就是持续问了20分钟而已.但我还是在此给大家分享一下问题吧.
用户7267083
2022/12/08
5711
南大ics面试记录
ics-to-json
昨天提到可以订阅ics,那能不能将ics转json呢?可以试试这个ics-to-json
阿超
2022/10/28
2260
用Xcode创建C++工程测试LeetCode代码
最近打算练习LeetCode,因为是做iOS的,所以选择了C++语言,Xcode也能直接编译运行。这里介绍一下用Xcode创建C++工程的方法:
Cloudox
2021/11/23
1.1K0
YOLOv4 | 用C++ 和OpenCV 实现视频目标检测
据说,现在很多小区都上线了AI抓拍高空抛物的黑科技,可以自动分析抛物轨迹,用来协助检查很多不文明行为。
CV君
2021/05/07
3.2K0
YOLOv4 | 用C++ 和OpenCV 实现视频目标检测
nginx代理Google An­a­lyt­ics
Google An­a­lyt­ics 是谷歌提供的数据统计服务,可以对目标网站进行访问数据统计和分析,并提供多种参数供网站拥有者使用。
dogfei
2020/07/31
1.1K0
java ics解析ical4j
使用:https://www.ical4j.org/examples/parsing/
阿超
2022/11/21
7790
java ics解析ical4j
ics启动失败 教您win7ics启动失败怎么办
ico是什么呢?有些时候我们会需要把自己的电脑当成无线热点WiFi来使用,然而这时我们就必须得要开启这个服务了,但要是在开启的过程中提示ICS启动失败该怎么解决呢?下面开始给大家介绍Windows7系
牛肉面
2021/01/26
2.2K0
用C++ 和OpenCV 实现视频目标检测(YOLOv4模型)
据说,现在很多小区都上线了AI抓拍高空抛物的黑科技,可以自动分析抛物轨迹,用来协助检查很多不文明行为。
博文视点Broadview
2021/04/26
1.8K0
用C++ 和OpenCV 实现视频目标检测(YOLOv4模型)
【SAP业务模式】之ICS(三):前台操作
SAP梦心
2018/01/05
1.3K0
【SAP业务模式】之ICS(三):前台操作
用tk创建菜单
from tkinter import * from tkinter import messagebox class Application(Frame): def __init__(self,master=None): # Frame是父类,得主动的调用父类 的构造器 super().__init__(master) # super() 代表的是父类的定义,而不是父类的对象 self.master = master self.
一写代码就开心
2020/11/20
1.5K0
用tk创建菜单
C++创建线程_C语言网络编程创建线程
使用CreateThread()函数创建,则线程函数必须申明为DWORD WINAPI;
全栈程序员站长
2022/09/27
2.3K0
用new创建数组
由于new创建的对象是在运行时确立的,所以有着具体情况具体分析的优点,那么什么叫做具体情况具体分析呢?我觉得c++ primer plus的一个例子十分贴切——比如你在度假,已经做好每天的参观计划,可突然有一天天气不好或你心情不好,此时你就不想参观了,如果此时是在编译状态,系统是不允许的,你必须按照计划去参观,但运行时状态,系统是允许的,此时你就可以呆在酒店尽情的玩耍了。用new创建数组也有此优点,即数组长度可以根据情况而定。
全栈程序员站长
2022/08/28
6220
用new创建数组
用Matplotlib创建Synthwave
synthwave是一种独特而独特的音乐流派,其灵感来自1980年代的怀旧风格,是技术人员共同的最爱。喜欢它,并且发现它的艺术风格令人难以置信地令人着迷。
代码医生工作室
2020/03/18
1.4K0
用Matplotlib创建Synthwave
【工业控制系统】深入了解 ICS612:ICS 网络安全:第 1 部分
ICS 从业者可以立即在实际情况中使用他们的 ICS612 培训。 降落飞机 我认识一家生产工厂的首席执行官,我们就叫他比尔吧,他希望他的关键团队成员真正了解他的运营团队每天为实现生产目标而承受的压力。比尔还希望他的经理和支持人员能够理解“让它发生”和“看着它发生”之间的区别。换句话说,他希望他的团队能够认识到认为自己有技能和知道自己有技能之间的区别,并坚定地理解如果只有“教育知识”而不是“知识结合起来”会有不同的结果有经验。” 比尔做了什么来灌输这一课?他为他的 10 名主要员工购买了一小时的飞行课程
架构师研究会
2022/03/08
5500
【SAP业务模式】之ICS(五):定价配置
SAP梦心
2018/01/05
1.1K0
【SAP业务模式】之ICS(五):定价配置
c-创建链表
浏览量 2 #include<stdio.h> #include<stdlib.h> #include<malloc.h> typedef struct LNode{ int data; struct LNode *next; }LNode,*LinkList; LinkList CreateList(int n); void print(LinkList h); int main(){ LinkList Head=NULL; int n; scanf("
kdyonly
2023/03/03
3700
C语言创建链表
       链表的结点左边一部分是存放的数据,右边一部分是后继指针指向下一个结点的地址。C语言中通常定义一个结构体类型来存储一个结点,如下:
Twcat_tree
2022/11/30
1.7K0
C语言创建链表
用.NET创建Windows服务
译者说明:我是通过翻译来学习C#的,文中涉及到的有Visual Studio.NET有关操作,我都根据中文版的VS.NET显示信息来处理的,可以让大家不致有误解。
Java架构师必看
2021/03/22
1.1K0
点击加载更多

相似问题

用javascript创建.ics文件

10

用目标C创建Person类

12

用javascript或jquery创建.ics文件

54

用Objective-C解析VCALENDAR (ics)

20

目标c-如何在iphone上打开ics文件?

18
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文