我正在开发的一个应用程序将在一年中的每个工作日都有一条每日消息。我在名为“星期一”、“星期二”、“星期三”、“星期四”、“星期五”的文件夹中保存了每个工作日的 PDF。每个 PDF 都被命名为 0.pdf、1.pdf 等,以便我可以递增计数。下面是我的显示代码,但我遇到的问题是每次加载 View 时它都会增加计数。在日期与上一个 PDF 不同之前,不前进到下一个 PDF 的好方法是什么?
- (void)viewDidLoad {
NSDateFormatter* day = [[NSDateFormatter alloc] init];
[day setDateFormat: @"EEEE"];
NSLog(@"the day is: %@", [day stringFromDate:[NSDate date]]);
NSString *dayString = [day stringFromDate:[NSDate date]];
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSInteger whichWeekMonday = [defaults integerForKey:@"DevoWeekMonday"];
NSInteger whichWeekTuesday = [defaults integerForKey:@"DevoWeekTuesday"];
NSInteger whichWeekWednesday = [defaults integerForKey:@"DevoWeekWednesday"];
NSInteger whichWeekThursday = [defaults integerForKey:@"DevoWeekThursday"];
NSInteger whichWeekFriday = [defaults integerForKey:@"DevoWeekFriday"];
NSLog(@"Integer Thursday: %ld", (long)whichWeekThursday);
NSString *whichWeekMondayString = [[NSNumber numberWithInteger:whichWeekMonday] stringValue];
NSString *whichWeekTuesdayString = [[NSNumber numberWithInteger:whichWeekTuesday] stringValue];
NSString *whichWeekWednesdayString = [[NSNumber numberWithInteger:whichWeekWednesday] stringValue];
NSString *whichWeekThursdayString = [[NSNumber numberWithInteger:whichWeekThursday] stringValue];
NSLog(@"Thursday string: %@", whichWeekThursdayString);
NSString *whichWeekFridayString = [[NSNumber numberWithInteger:whichWeekFriday] stringValue];
if ([dayString isEqualToString:@"Monday"]) {
NSString *Documents = [[NSBundle mainBundle] pathForResource:whichWeekMondayString ofType:@"pdf" inDirectory:@"Mondays"];
NSURL *url = [NSURL fileURLWithPath:Documents];
NSLog(@"%@",url);
NSURLRequest *request = [NSURLRequest requestWithURL:url];
[savedweb loadRequest:request];
NSInteger updatedNumberMonday = whichWeekMonday + 1;
[defaults setInteger:updatedNumberMonday forKey:@"DevoWeekMonday"];
[defaults synchronize];
}
if ([dayString isEqualToString:@"Tuesday"]) {
NSString *Documents = [[NSBundle mainBundle] pathForResource:whichWeekTuesdayString ofType:@"pdf" inDirectory:@"Tuesdays"];
NSURL *url = [NSURL fileURLWithPath:Documents];
NSLog(@"%@",url);
NSURLRequest *request = [NSURLRequest requestWithURL:url];
[savedweb loadRequest:request];
NSInteger updatedNumberTuesday = whichWeekTuesday +1;
[defaults setInteger:updatedNumberTuesday forKey:@"DevoWeekTuesday"];
[defaults synchronize];
}
if ([dayString isEqualToString:@"Wednesday"]) {
NSString *Documents = [[NSBundle mainBundle] pathForResource:whichWeekWednesdayString ofType:@"pdf" inDirectory:@"Wednesdays"];
NSURL *url = [NSURL fileURLWithPath:Documents];
NSLog(@"%@",url);
NSURLRequest *request = [NSURLRequest requestWithURL:url];
[savedweb loadRequest:request];
NSInteger updatedNumberWednesday = whichWeekWednesday +1;
[defaults setInteger:updatedNumberWednesday forKey:@"DevoWeekWednesday"];
[defaults synchronize];
}
if ([dayString isEqualToString:@"Thursday"]) {
// perform some action
NSString *Documents = [[NSBundle mainBundle] pathForResource:whichWeekThursdayString ofType:@"pdf" inDirectory:@"Thursdays"];
NSLog(@"File: %@", Documents);
NSURL *url = [NSURL fileURLWithPath:Documents];
NSLog(@"%@",url);
NSURLRequest *request = [NSURLRequest requestWithURL:url];
[savedweb loadRequest:request];
NSInteger updatedNumberThursday = whichWeekThursday +1;
[defaults setInteger:updatedNumberThursday forKey:@"DevoWeekThursday"];
[defaults synchronize];
}
if ([dayString isEqualToString:@"Friday"]) {
NSString *Documents = [[NSBundle mainBundle] pathForResource:whichWeekFridayString ofType:@"pdf" inDirectory:@"Fridays"];
NSURL *url = [NSURL fileURLWithPath:Documents];
NSLog(@"%@",url);
NSURLRequest *request = [NSURLRequest requestWithURL:url];
[savedweb loadRequest:request];
NSInteger updatedNumberFriday = whichWeekFriday +1;
[defaults setInteger:updatedNumberFriday forKey:@"DevoWeekFriday"];
[defaults synchronize];
}
if ([dayString isEqualToString:@"Saturday"]) {
}
if ([dayString isEqualToString:@"Sunday"]) {
}
// NSString *Documents = [[NSBundle mainBundle] pathForResource:selectedCountry ofType:@"pdf" inDirectory:@"thepdfpowerpoints"];
[super viewDidLoad];
// Do any additional setup after loading the view from its nib.
}
最佳答案
编辑
基于您当前的问题,即一致地获取计数,而不是每次加载 View 时都增加:
我相信让计数保持动态会更好。因此,您可以使用日期字符串来确定哪个文件夹,然后使用如下所示的方法根据一年中的第几周动态找出哪个编号的 pdf:
NSDateComponents weekofyearComponents = [[NSCalendar(calendarIdentifier: NSCalendarIdentifierISO8601)] components:(NSCalendarUnitWeekOfYear ) fromDate: [NSDate date]];
NSInteger whichWeekOfYear = weekofyearComponents.weekOfYear
原始答案
我可以看到几种方法。
一种方法就像您建议的那样,将一年中的第几天提供给该天的 PDF。这是 getting the day of the year in iOS swift 的链接.
另一种方法是获取 week of the year number (1-52) 然后 get the day of the week number这样您就可以按一年中的一周在目录中组织 pdf,然后在其中包含该周中每一天的消息编号。
我最后的评论是,对于 iOS 应用程序中的每日消息来说,PDF 听起来有点沉重或笨重。一个文本文件可能就足够了,或者一些轻量级数据库或一些通过网络请求更新的缓存,以刷新和存储当天的当前和接下来的几条消息。我确实缺乏上下文,所以我不会否认 PDF 可能正是您所需要的事实。
关于ios - 在特定日期显示特定文件的建议逻辑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66336432/