アプリにVurig Custom Calendarを使用しています。カレンダーに複数の日付をマークする必要がありますが、日付は動的である必要があります。つまりJSONKit
、ハードコードされているのではなく、json ファイル (使用している) からのデータです。どうやってやるの?カレンダーをループして、json ファイルの日付を配列に追加するにはどうすればよいですか?
これは私がこれまでに持っているコードです:
JSON:
{
"events": [
{
"event": {
"month": "10",
"day": "15",
"detail": "Some Detail"
}
},
{
"event": {
"month": "10",
"day": "25",
"detail": "Some blah"
}
}
]
}
コード:
-(void)calendarView:(VRGCalendarView *)calendarView switchedToMonth:(int)month targetHeight:(float)targetHeight animated:(BOOL)animated {
NSArray *dates;
id day, month;
JSONDecoder* decoder = [[JSONDecoder alloc] init];
NSData *cdata =[self getJSON];
NSDictionary* listDictionary = [decoder objectWithData:cdata];
NSArray* events =[listDictionary objectForKey:@"events"];
for (NSDictionary *event in events) {
NSDictionary *eventDetails = [event objectForKey:@"event"];
day = [eventDetails objectForKey:@"day"];
month = [eventDetails objectForKey:@"month"];
}
//need help here to mark multiple dates in the calendar if month = currentMonth
NSCalendar *calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSIslamicCalendar];
NSDateComponents *components = [[NSDateComponents alloc] init];
[components setDay:day]; //data from json file
[components setMonth:month]; //data from json file
NSDate *date1 = [calendar dateFromComponents:components];
dates = [NSArray arrayWithObjects:date1, nil];
[calendarView markDates:dates];
}
- (NSData*) getJSON {
NSError *err = nil;
NSBundle *bundle = [NSBundle bundleForClass:[self class]];
NSString *filePath = [bundle pathForResource:@"info" ofType:@"json"];
NSData *jsonData = [NSData dataWithContentsOfFile:filePath options:NSDataReadingMappedIfSafe error:&err];
return jsonData;
}