我是iPhone开发新手,
我想比较两个数组索引
for (int i=0; i<[CustomeDateArray count]; i++)
{
if (([CustomeDateArray objectAtIndex:1] == [newDateArray objectAtIndex:1]) && ([CustomeDateArray objectAtIndex:2] == [newDateArray objectAtIndex:2]))
{
exists=TRUE;
NSLog(@"exists=TRUE");
}
}
我的日志显示了此结果:
CustomeDateArray at Index1=06
CustomeDateArray at Index2=2012
newDateArray at Index1=06
newDateArray at Index2=2012
如果我的if
条件为真,那么控件应该进入内部并打印exists=TRUE
但我无法看到exists=TRUE
控件不在里面。
有什么问题?
我们将不胜感激。
答案 0 :(得分:3)
for (int i=0; i<[CustomeDateArray count]; i++)
{
if (([[CustomeDateArray objectAtIndex:1] isEqual:[newDateArray objectAtIndex:1]]) && ([[CustomeDateArray objectAtIndex:2] isEqual:[newDateArray objectAtIndex:2]]))
{
exists=TRUE;
NSLog(@"exists=TRUE");
}
}
今年五月帮助你 快乐编码: - )
答案 1 :(得分:1)
好吧,我在你的代码中看到了一些问题:
为什么要在CustomDateArray(for循环)中循环,而你没有使用索引“i”? (这与具体问题无关,只是检查您的代码是否有拼写错误!)
更具体的问题:NSArray包含Obj-C中的对象和对象是指针,所以你的“==”只是比较指针。这意味着:
if([CustomDateArray objectAtIndex:1]==[CustomDateArray objectAtIndex:2]) ...
对应于:
id obj1 = [CustomDateArray objectAtIndex:1];
id obj2 = [CustomDateArray objectAtIndex:2];
if(obj1==obj2) ...
只有当obj1和obj2指向同一个地址时,“if”才会返回true,因此它们是完全相同的对象。但如果检查的目的是知道这两个日期是否相同,那么您应该使用NSDate特定的比较方法:
NSDate *d1 = [CustomDateArray objectAtIndex:1];
NSDate *d2 = [CustomDateArray objectAtIndex:2];
if([d1 isEqualToDate:d2]) ...
相反,如果对象是字符串,则应使用“isEqualToString:”方法。