开发者

Compare value doesn't work (Objective-C)

In my tableView at the numberOfRowInSection, I try to compare myDate inside self.date to dateInFiche inside self.allDates.

my date is like: 12-05-1986

in the For statement dateinFiche will have those value:

12-05-1986

12-05-1986

13-05-1986

18-05-1986

When the if statement occurs the first date is the same so it will increment the numberofRows, the second is also the same but the problem is the if didn't want to be executed at this point.

I use a breakpoint and the value are the same but the if not working. Any idea?


(NSInteger)tableView:(UITableView *)tableView numberOfRowsI开发者_运维技巧nSection:(NSInteger)section {

NSString *myDate = [self.date objectAtIndex:section]; int numberOfRows = 0; for (int i = 0; i [self.allDates count]; i++) { Date *dateFiche = (Date *)[self.allDates objectAtIndex:i]; NSString *dateInFiche = [[dateFiche sDate] substringWithRange: NSMakeRange( 0,10)]; if ( dateInFiche == myDate ) { numberOfRows = numberOfRows+1; } } return numberOfRows; }


Well, that's not going to work because you're comparing a pointer to an NSString object directly with a pointer to another NSString object. This is akin to:

void *someBuf = calloc (100, 1);
void *anotherBuf = calloc (100, 1);

memcpy (someBuf, "test", 4);
memcpy (anotherBuf, "test", 4);

if (someBuf == anotherBuf)
{
    // won't branch even though their contents are identical
    ...

You can't compare the pointers themselves, you have to compare their contents. You can do this with NSString's isEqualToString:.

if ([firstString isEqualToString:secondString])
{
    // will branch only if the strings have the same content
    ...


Your if statement is using == to compare two strings directly. That will only compare the values of the pointers, not the actual contents of the string. Try this instead:

if ([dateInFiche isEqualToString:myDate]) {
    ....
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜