Search code examples
iosuitableviewnsindexpath

Comparing NSIndexPath


This is going to be something really stupid, but I have this code in my cellForRowAtIndexPath:

if ([self.indexPathSelected compare:indexPath] == NSOrderedSame)
{
    NSLog(@" %d %d %d %d", self.indexPathSelected.row, self.indexPathSelected.section, indexPath.row, indexPath.section);
}

This prints:

0 0 0 0

0 0 1 0

0 0 2 0

0 0 3 0

0 0 4 0

0 0 5 0

I was expecting it to only print 0 0 0 0.

What am I doing wrong here?


Solution

  • Since you're setting indexPathSelected to nil, you want to make sure it's non-nil before doing a compare.

    if (self.indexPathSelected && [self.indexPathSelected compare:indexPath] == NSOrderedSame)
    {
        NSLog(@" %d %d %d %d", self.indexPathSelected.row, self.indexPathSelected.section, indexPath.row, indexPath.section);
    }
    

    According to the documentation on NSIndexPath's compare method:

    Parameters

    indexPath

    Index path to compare.

    This value must not be nil. If the value is nil, the behavior is undefined.