1

アプリに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;
}
4

1 に答える 1

0

json を解析し、日付を取得し、em を配列に追加して、配列にマークを付けます

1つの例(免責事項はインラインで書かれ、具体的な情報はありません)

NSData *jsonData; // comes from somewhere
id parsedJSON = [NSJSONSerialization JSONObjectWithData:jsonData options:0 error:nil];
id datesAsStringsList = [parsedJSON valueForKey:@"someKeyWhereTheDatesAre"];
NSDateFormatter *formatter = [[NSDateFormatter alloc] initWithDateFormat:@"YYYYMMDD" allowNaturalLanguage:NO];
NSMutableArray *dates = [NSMutableArray array];
for (NSString dateString in datesAsStringsList) {
    id newDate = [formatter dateFromString:dateString];
    if(newDate)
        [dates addObject:newDate];
}
[calendar markDates:dates];
于 2013-10-23T00:45:52.670 に答える