Ios 在Objective C中保存Json数据的问题
我是Objective C的初学者,我尝试从Json保存数据。我做得很好,我的程序从互联网上的Json获取数据并保存。然而,当我关闭应用程序并在没有互联网的情况下再次启动它时,它尝试再次下载并保存它,而不是加载数据(我认为数据已被删除) 这是我的代码:Ios 在Objective C中保存Json数据的问题,ios,objective-c,Ios,Objective C,我是Objective C的初学者,我尝试从Json保存数据。我做得很好,我的程序从互联网上的Json获取数据并保存。然而,当我关闭应用程序并在没有互联网的情况下再次启动它时,它尝试再次下载并保存它,而不是加载数据(我认为数据已被删除) 这是我的代码: - (NSData *)saveAllScheduleData:(NSString *)endpointOfTheChannel { NSData *channelData; NSDateFormatter *dateForma
- (NSData *)saveAllScheduleData:(NSString *)endpointOfTheChannel {
NSData *channelData;
NSDateFormatter *dateFormatDuration = [[NSDateFormatter alloc] init];
[dateFormatDuration setDateFormat:@"HH:mm:ss"];
NSDate *duration = [dateFormatDuration dateFromString:@"23:59:59"];
NSDate *dateOfSave = [[NSUserDefaults standardUserDefaults] valueForKey:@"dateOfSave"];
NSCalendar *calendar = [NSCalendar currentCalendar];
NSDate *currentDate = [NSDate date];
[calendar components:(NSCalendarUnitHour | NSCalendarUnitMinute | NSCalendarUnitSecond) fromDate:currentDate];
NSDateComponents *comps = [calendar components:(NSCalendarUnitHour | NSCalendarUnitMinute | NSCalendarUnitSecond) fromDate:duration];
NSDate *nextSaveDate = [calendar dateByAddingComponents:comps toDate:dateOfSave options:0];
NSString *url = [NSString stringWithFormat:@"https://apis.is%@", endpointOfTheChannel];
if ([[NSUserDefaults standardUserDefaults] valueForKey: url] && [currentDate compare:nextSaveDate] == NSOrderedAscending) {
return channelData = [[NSUserDefaults standardUserDefaults] valueForKey: url];
} else {
channelData = [NSData dataWithContentsOfURL:[NSURL URLWithString:url]];
[calendar components:(NSCalendarUnitHour | NSCalendarUnitMinute | NSCalendarUnitSecond) fromDate:dateOfSave];
[[NSUserDefaults standardUserDefaults] setObject:dateOfSave forKey:@"dateOfSave"];
[[NSUserDefaults standardUserDefaults] setObject:channelData forKey:url];
return channelData;
}
}
是的,我也试着每天重新加载数据,但是现在有了这个bug,这是没有用的
谢谢您的帮助。您需要将用户默认值与呼叫同步
[[NSUserDefaults standardUserDefaults] synchronize]
当您保存它时。您的
if语句中有两个条件
可能是第二个条件不符合要求。(正如你确认的那样,它不起作用。所以这就是答案)
其次,当您将任何数据保存在NSUserDefaults
中时,请使用适当的键进行存储。您正在将变量NSString*url
用作Key
。这可能会随时更改,您将无法从该键访问NSUserDefaults
。它可能是一个常量键
,就像您用来保存保存日期
希望你得到它 你是如何关闭应用程序的?我双击主按钮并关闭应用程序你的if语句中有两个条件。可能是第二个条件不符合你说得对,第二个条件不太好,谢谢