gpt4 book ai didi

ios - 如何使用 NSNumbers 在 switch 语句中设置 NSDate

转载 作者:行者123 更新时间:2023-11-29 10:28:21 24 4
gpt4 key购买 nike

我想做的是将 UITableView 的部分索引映射到相应的 NSDate,我最初想这样做:

-(BOOL)whatSectionsAreVisible {
NSArray *visibleRowIndexes = [self.agendaTable indexPathsForVisibleRows];
for (NSIndexPath *index in visibleRowIndexes) {
NSNumber *daySection = @(index.section);

// Here is where I will map every index.section to an NSDate
static NSDateFormatter *dateFormatter = nil;
if(!dateFormatter){
dateFormatter = [NSDateFormatter new];
dateFormatter.dateFormat = @"yyyy-MM-dd"; // Read the documentation for dateFormat
}



if (daySection == 0){
NSDate *date = [dateFormatter dateFromString:@"2015-06-01"];
}
else if (daySection == 1){
NSDate *date = [dateFormatter dateFromString:@"2015-06-02"];
}

//... and so on

}

但是,使用 if 语句执行 30 天会变得非常冗长,我认为对于这种情况,使用 switch 语句会更有意义。我无法弄清楚如何设置 switch 语句的语法,我试过这样做:

switch (daySection) {
case 0:
NSDate *date = [dateFormatter dateFromString:@"2015-06-01"];
break;

case 1:
NSDate *date = [dateFormatter dateFromString:@"2015-06-02"];
break;

default:
break;
}

但第一行给我的错误是 Statement requires expression of integer type ('NSNumber *__strong' invalid)。如何正确设置此语句?

旁注:else if (daySection == 1) 行警告我正在比较指针和整数(NSNumber 和 int)。我将如何正确地进行比较?

最佳答案

与其使用 dateFromString 初始化器,不如直接从组件构建日期,并完全避免 switch:

NSDateComponents *comps = [[NSDateComponents alloc] init];
[comps setDay:daySection.intValue]; // <<== Extract int from daySection
[comps setMonth:6];
[comps setYear:2015];
NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
NSDate *date = [gregorian dateFromComponents:comps];

关于ios - 如何使用 NSNumbers 在 switch 语句中设置 NSDate,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31010423/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com