iphone - 比较iOS游戏中每日奖励的两个日期

标签 iphone ios date nsdate

我正在实现“每日奖励”方法,以便每天在我的游戏中提供一些硬币。

我有一个包含实际日期和时间的 json。

问题是我不知道如何比较日期。

这是我的代码-

@implementation ItemRewardManager

+(NSDate *)dateFromUTCTimeStamp:(NSString *)dateString{

    NSDateFormatter *df = [[NSDateFormatter alloc] init];
    df.dateFormat = @"yyyy-MM-dd HH:mm:ss";
    NSDate *myDate = [df dateFromString: dateString];
    NSTimeZone *gmt = [NSTimeZone timeZoneWithAbbreviation:@"GMT"];
    [df setTimeZone:gmt];

    [[NSUserDefaults standardUserDefaults] setObject:myDate forKey:@"lastDatePlayed"];
    [[NSUserDefaults standardUserDefaults] synchronize];
}

-(void)getData
{
    NSData *jsonData = [NSData dataWithContentsOfURL:[NSURL URLWithString:dateUrl]];
    id jsonObjects = [NSJSONSerialization JSONObjectWithData:jsonData options:NSJSONReadingMutableContainers error:nil];
    NSArray *keys = [jsonObjects allKeys];

    // values in foreach loop
    for (NSString *key in keys) {
        NSLog(@"%@ is %@",key, [jsonObjects objectForKey:key]);
    }
}

+(void)dailyReward{
    NSLog(@"llega al daily");
    NSDateFormatter *dateFormat = [[NSDateFormatter alloc]init];
    [dateFormat setDateFormat:@"HH:mm:ss zzz"];

    NSDate *now = [NSDate date];
    NSString *dateString = [dateFormat stringFromDate:now];

    if([[[NSUserDefaults standardUserDefaults] objectForKey:@"lastDatePlayed"] isEqualToString: dateString])
    {
        NSLog(@"Actual date is the same as json date");
        UIAlertView* alert = [[[UIAlertView alloc] initWithTitle:nil
                                                         message:@"You have win 5 coins! Come back tomorrow for more."
                                                        delegate:nil
                                               cancelButtonTitle:@"Ok"
                                               otherButtonTitles: nil] autorelease];
        [alert show];
        return;
    }
}
@end

因此,当我打开我的应用程序并调用此方法时,我的应用程序由于某种原因崩溃了。

我认为问题可能出在两个日期的比较上。

有人可以告诉我是否有问题吗?

最佳答案

使用以下内容。

if ([date1 compare:date2]==NSOrderedSame)

date1 和 date2 是 NSdate 对象。

关于iphone - 比较iOS游戏中每日奖励的两个日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17296888/

相关文章:

iphone - 当我使用导航 Controller 时 View 消失时出现黑条

iphone - 自定义类上的 NSData?

ios - swift fatal error : unexpectedly found nil while unwrapping an Optional value (lldb) in Tableview

ios - 如何向 MapKit CallOuts Swift 3 添加按钮

java - 设置日期对象 Java

Postgresql:如何查找 2 个日期和 2 个时间之间的小时数?

iphone - 第二次点击时未设置 UITabBarItem 上的自定义背景

iphone - 如何改善iPhone应用程序的边缘检测?

c++ - Xcode:使用 32 位库编译 64 位应用程序

java - 为什么 new java.text.SimpleDateFormat ("EEEE").format(new java.util.Date(2015, 6, 9)) 返回错误的星期几?