【发布时间】:2011-05-17 08:15:37
【问题描述】:
我有四个数组,它们充满了 NSNull 元素:年(100 个元素)、月(12)、天(31)和 arrayString。当我选择两个日期时,我想在该期间的每一天包含的每个数组“arrayString”中放置一个字符串。
我选择两个日期并执行 dateFormatter 并得到第一天和最后一天,一年的一个月: 我不写 date1 和 date2 但它们是两个 NSDate
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"dd"];
int firstDay = [[dateFormatter stringFromDate:data1] intValue];
int lastDay = [[dateFormatter stringFromDate:data2] intValue];
[dateFormatter setDateFormat:@"MM"];
int firstMonth = [[dateFormatter stringFromDate:data1] intValue];
int lastMonth = [[dateFormatter stringFromDate:data2] intValue];
[dateFormatter setDateFormat:@"yyyy"];
int firstYear = [[dateFormatter stringFromDate:data1] intValue]-2011;
int lastYear = [[dateFormatter stringFromDate:data2] intValue]-2011;
NSString *string = @"firstString";
在我想在该期间的每一天包含的每个数组中添加一个 NSString 之后,这是可能的,因为数组中的每个位置都有我在 viewdidload 中放入的 NSNull 元素:
for (int k = firstYear ; k<lastYear + 1; k++){
for (int i = firstMonth; i < lastMonth+1; i++)
{
for (int j = firstDay; j < lastDay+1; j++)
{
[[days objectAtIndex:j] addObject: string];
}
[months replaceObjectAtIndex:i withObject:days];
}
[years replaceObjectAtIndex:k withObject:months];
}
当我选择同一个月的一个时期时,此代码可以正常工作,因为如果我选择例如:15/05/2011 到 25/05/2011 没关系,它会在该时期的每一天填充数组字符串。 但是,如果我选择例如 28/05/2011 到 1/06/2011,那么第三个循环就会出现问题;因为“firstday”是 28 而“lastday”是 1,它不会在循环中进入;我该如何解决这个问题?
【问题讨论】:
-
目前还不是很清楚你到底想做什么。也许您可以告诉我们您的目标(在更高的层次上),我们可以从那里帮助您?
-
看起来很清楚,但问题是当我选择一个贯穿大多数月份的时期时
-
我让你解释你的目标的原因是为了让我们可以帮助你用
NSDate、NSDateComponents、NSTimeInterval等来重新表述你的解决方案。现在是'不清楚你想要达到的目标。 -
好的,所以我想要一张可以知道特定日期有多少元素的地图;这些是四个数组,一个在其他数组中:一个用于年,一个用于月,一个用于天,一个在天数组的每个索引中,我可以在其中添加一个字符串;这样我就有了所有日子的完整地图,我可以知道特定日子有多少信息......你明白吗?如果不清楚,我会随时为您提供进一步澄清
标签: objective-c xcode ios for-loop nsarray