我是Objective-C的新手,我有一个基本的应用程序,我在Xcode中修补它只是读取所有日历事件(使用EventKit),然后重新格式化数据并将其转储为json编码的字符串。
我可以在我的iMac(在Xcode中)上运行并正确返回数据,但我的Macbook Air使用相同的日历(通过iCloud同步)不返回任何结果。它还运行并在朋友机器上返回结果(在Xcode中)。如果我构建应用程序并从命令行运行它,即使在它在Xcode中正常工作的机器上也没有结果。
我在这里缺少一些额外的东西吗?这是我目前的代码。有人可以给我一些关于下一步要尝试使用它的指针吗?我只是无法弄清楚它为什么在一台机器而不是另一台机器上工作,以及为什么它在Xcode中工作而不是从命令行工作。
思想?
#import <Foundation/Foundation.h>
#import <EventKit/EKEventStore.h>
#import <EventKit/EKEvent.h>
#import <EventKit/EKCalendarItem.h>
int main(int argc, const char * argv[])
{
@autoreleasepool {
EKEventStore *store = [[EKEventStore alloc] init];
NSCalendar *currCalendar = [NSCalendar currentCalendar];
NSDateComponents *oneDayAgoComponents = [[NSDateComponents alloc] init];
oneDayAgoComponents.day = -1;
NSDate *oneDayAgo = [currCalendar dateByAddingComponents:oneDayAgoComponents
toDate:[NSDate date]
options:0];
NSDateComponents *oneYearFromNowComponents = [[NSDateComponents alloc] init];
oneYearFromNowComponents.year = 1;
NSDate *oneYearFromNow = [currCalendar dateByAddingComponents:oneYearFromNowComponents
toDate:[NSDate date]
options:0];
NSPredicate *predicate = [store predicateForEventsWithStartDate:oneDayAgo
endDate:oneYearFromNow
calendars:nil];
NSArray *events = [store eventsMatchingPredicate:predicate];
int i;
int eventCount = (int)[events count];
NSMutableArray *formattedEvents = [[NSMutableArray alloc] init];
for (i=0; i<eventCount; i++) {
NSDictionary *dict = @{
@"title" : [[events objectAtIndex:i] title],
@"starts" : [[[events objectAtIndex:i] startDate] description],
@"ends" : [[[events objectAtIndex:i] endDate] description],
};
[formattedEvents addObject:dict];
}
NSArray *eventArray = [NSArray arrayWithArray:formattedEvents];
NSData *jsondata = [NSJSONSerialization dataWithJSONObject:eventArray options:NSJSONWritingPrettyPrinted error:nil];
NSString *jsonString = [[NSString alloc] initWithData:jsondata encoding:NSUTF8StringEncoding];
printf("%s", [jsonString UTF8String]);
return 0;
}
}
答案 0 :(得分:0)
结束了沙箱问题。我必须去检查EKEAitySventus的EKAuthorizationStatus以确定应用程序是否有权访问这些事件,如果没有,请求它。
奇怪的是,它最初从Xcode中请求访问而我的iMac没有问题,但我的Macbook上没有问题,但是哦,好吧。固定的。