比较两个NSDate对象的相等性会产生意外结果

Ali*_*kar 0 iphone objective-c ios

我正在运行此for循环,如果满足条件,则删除indexValue.我正在比较两个NSDate对象,由于某种原因它不起作用.根据日志,NSDate对象完全匹配.

请指导我.

for (int u=0 ; u<arraywithDateAddedKeyss.count ; u++)
        {
            NSLog(@"arraywithDateAddedKeyss: %@ == Array 5: %@",arraywithDateAddedKeyss[u],oldArray[5]);

            if (arraywithDateAddedKeyss[u] == oldArray[5])
            {
                [arraywithDateAddedKeyss removeObjectAtIndex:u];

                [userDefaults setObject:arraywithDateAddedKeyss forKey:@"arraywithReminderDateKeys"];

                [userDefaults synchronize];


                NSLog(@"Object Removed from array1");


            }
        }
Run Code Online (Sandbox Code Playgroud)

NSLog数据

arraywithDateAddedKeyss: 2014-02-01 09:01:20 +0000 == Array 5: 2014-02-01 09:01:20 +0000
Run Code Online (Sandbox Code Playgroud)

Gab*_*lla 5

您无法使用比较两个日期==.

==比较指针相等性,这意味着您正在检查对象标识而不是相等.(值得一读的主题是:http://nshipster.com/equality/)

使用isEqualToDate:的方法NSDate为这样的目的

NSDate *date1 = arraywithDateAddedKeyss[u];
NSDate *date2 = oldArray[5];

if ([date1 isEqualToDate:date2]) {
   ...
}
Run Code Online (Sandbox Code Playgroud)

有关比较NSDate对象的其他方法,可以参考:如何比较Objective-C中的两个日期