我正在运行此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");
}
}
NSLog数据
arraywithDateAddedKeyss: 2014-02-01 09:01:20 +0000 == Array 5: 2014-02-01 09:01:20 +0000
答案 0 :(得分:5)
您无法使用==
比较两个日期。
==
比较指针相等性,这意味着您正在检查对象标识而不是相等。
(值得一读:http://nshipster.com/equality/)
出于此目的使用NSDate
NSDate *date1 = arraywithDateAddedKeyss[u];
NSDate *date2 = oldArray[5];
if ([date1 isEqualToDate:date2]) {
...
}
方法
NSDate
有关比较{{1}}个对象的其他方法,请参阅:isEqualToDate:
答案 1 :(得分:0)
将您的ID更改为isEqual,您应该使用它而不是==:
if ([arraywithDateAddedKeyss[u] isEqual:oldArray[5]])
{
//Add this log for debuting
NSLog(@"Dates are equal");
//.. your code here
}
希望得到这个帮助。
答案 2 :(得分:0)
您无法使用pointer
运算符比较两个==
。更好地使用代码下方.. See apple's doc
NSDate *date = oldArray[5];
for(NSDate *dateToBeCompare in arraywithDateAddedKeyss)
{
if ([date compare:dateToBeCompare] == NSOrderedSame)
{
//Your code here...
}
}
答案 3 :(得分:0)
将您的代码更改为:
for (int u=arraywithDateAddedKeyss.count-1; u>=0 ; u--)
{
if ([arraywithDateAddedKeyss[u] compare:oldArray[5]] == NSOrderedSame)
{
[arraywithDateAddedKeyss removeObjectAtIndex:u];
[userDefaults setObject:arraywithDateAddedKeyss forKey:@"arraywithReminderDateKeys"];
[userDefaults synchronize];
}
}
注意:如果要删除某个索引处的对象,则必须将数组从末尾循环到开头