날짜, 월 및 연도의 값을 가진 DateString 배열이 있습니다.DateArray에서 NSDictionary를 월 단위로 만들기
이제 오름차순으로 정렬했습니다. 지금은이 키 - 값 쌍으로 사전에 넣어 가지고있다 -
키 - "1월"(월 이름) 및 값 : - 그 달의 날짜의 배열
할 수있는 사람 이걸하는 법을 제안 해주세요.
날짜, 월 및 연도의 값을 가진 DateString 배열이 있습니다.DateArray에서 NSDictionary를 월 단위로 만들기
이제 오름차순으로 정렬했습니다. 지금은이 키 - 값 쌍으로 사전에 넣어 가지고있다 -
키 - "1월"(월 이름) 및 값 : - 그 달의 날짜의 배열
할 수있는 사람 이걸하는 법을 제안 해주세요.
NSCalendar *calendar = [NSCalendar currentCalendar];
NSDateComponents *components = [[NSDateComponents alloc] init];
// Set your year and month here
[components setYear:2016];
NSMutableDictionary *dayAndMonthWiseList = [[NSMutableDictionary alloc] init];
for (int i=1; i<=12; i++)
{
[components setMonth:i];
NSDate *date = [calendar dateFromComponents:components];
NSRange range = [calendar rangeOfUnit:NSCalendarUnitDay inUnit:NSCalendarUnitMonth forDate:date];
NSMutableArray *dayList = [[[NSMutableArray alloc] init] mutableCopy];
for (int j=1; j<=range.length; j++)
{
[dayList addObject:[NSString stringWithFormat:@"%d",j]];
}
[dayAndMonthWiseList setObject:dayList forKey:[NSString stringWithFormat:@"%d",i]];
}
NSLog(@"Dic. :%@",dayAndMonthWiseList);
결과는 다음과 같습니다
Dic. :{
1 = (
1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,
26,
27,
28,
29,
30,
31
);
10 = (
1,
2,
3,
4,
5,
6,
7,
8,
9,
10,
11,
12,
13,
14,
15,
16,
17,
18,
19,
20,
21,
22,
23,
24,
25,
26,
27,
28,
29,
30,
31
);
11 = (
1,
2,
3,
4,
5,
6,
7,
8,
9,
10,
11,
12,
13,
14,
15,
16,
17,
18,
19,
20,
21,
22,
23,
24,
25,
26,
27,
28,
29,
30
);
12 = (
1,
2,
3,
4,
5,
6,
7,
8,
9,
10,
11,
12,
13,
14,
15,
16,
17,
18,
19,
20,
21,
22,
23,
24,
25,
26,
27,
28,
29,
30,
31
);
2 = (
1,
2,
3,
4,
5,
6,
7,
8,
9,
10,
11,
12,
13,
14,
15,
16,
17,
18,
19,
20,
21,
22,
23,
24,
25,
26,
27,
28,
29
);
3 = (
1,
2,
3,
4,
5,
6,
7,
8,
9,
10,
11,
12,
13,
14,
15,
16,
17,
18,
19,
20,
21,
22,
23,
24,
25,
26,
27,
28,
29,
30,
31
);
4 = (
1,
2,
3,
4,
5,
6,
7,
8,
9,
10,
11,
12,
13,
14,
15,
16,
17,
18,
19,
20,
21,
22,
23,
24,
25,
26,
27,
28,
29,
30
);
5 = (
1,
2,
3,
4,
5,
6,
7,
8,
9,
10,
11,
12,
13,
14,
15,
16,
17,
18,
19,
20,
21,
22,
23,
24,
25,
26,
27,
28,
29,
30,
31
);
6 = (
1,
2,
3,
4,
5,
6,
7,
8,
9,
10,
11,
12,
13,
14,
15,
16,
17,
18,
19,
20,
21,
22,
23,
24,
25,
26,
27,
28,
29,
30
);
7 = (
1,
2,
3,
4,
5,
6,
7,
8,
9,
10,
11,
12,
13,
14,
15,
16,
17,
18,
19,
20,
21,
22,
23,
24,
25,
26,
27,
28,
29,
30,
31
);
8 = (
1,
2,
3,
4,
5,
6,
7,
8,
9,
10,
11,
12,
13,
14,
15,
16,
17,
18,
19,
20,
21,
22,
23,
24,
25,
26,
27,
28,
29,
30,
31
);
9 = (
1,
2,
3,
4,
5,
6,
7,
8,
9,
10,
11,
12,
13,
14,
15,
16,
17,
18,
19,
20,
21,
22,
23,
24,
25,
26,
27,
28,
29,
30
);
}
당신은 코드를 작성, 모두가하는 것처럼.
(년, 월)부터 (배열)까지 사전이 필요합니다.
빈 가변적 인 사전으로 시작합니다. 그런 다음 항목을 반복합니다. 각 항목에 대해 년과 월을 얻으십시오 (저는 서로 다른 해의 1 월을 함께 사용하지 않기를 희망합니다). 사전에서 년/월을 찾아 가변 배열 값을 가져옵니다. 거기에 없으면 값으로 새로운 변경 가능 배열이있는 (년, 월) 키를 추가하십시오. 이제 (year, month) 배열을 가지고 그 배열에 항목을 추가하십시오.
데이터가 그 시점에서 고정되면 사전을 반복하고 모든 변경 가능한 배열을 변경 불가능한 배열로 바꿀 수 있습니다 (copy 만 사용하십시오). 그리고 모든 항목을 먼저 정렬하는 대신 사전의 키를 정렬하여 월 및 연도별로 정렬 한 다음 정렬이 필요할 때 정렬 할 수 있습니다. 예를 들어, 테이블 뷰에서는 실제로 표시되는 배열 만 정렬하면됩니다.
왜 NSDate 객체 대신 날짜 문자열 배열이 있습니까? 이 작업과 그 배열을 포함하는 다른 모든 작업을 훨씬 쉽게 할 수 있습니다. – trojanfoe
웹 서버에서 오는 것이므로 날짜를 말하면서 많은 것들의 가치를 얻는 모델을 만들었습니다. 그 중 하나가 날짜이므로 nsstring 형식으로 유지했습니다. NSString 대신 NSDate가 있으면 여기에서 도움이 될까요? –
그래; 항상 가장 적합한 데이터 유형을 사용하여 데이터를 저장합니다. – trojanfoe