Проверка на равенство в Objective-C

Сделайте правильное внешнее соединение с таблицей, назовите его tblCalendar, который предварительно заполнен датами, о которых вы хотите сообщить. И присоединитесь к полю даты.

Пол

13
задан suse 19 February 2010 в 03:22
поделиться

1 ответ

Когда вы используете == , вы сравниваете значения указателя. Это будет работать только в том случае, если сравниваемые объекты являются одним и тем же объектом с одним и тем же адресом памяти. Например, этот код вернет Эти объекты разные , потому что, хотя строки одинаковы, они хранятся в разных местах в памяти:

NSString* foo = @"Foo";
NSString* bar = [NSString stringWithFormat:@"%@",foo];
if(foo == bar)
    NSLog(@"These objects are the same");
else
    NSLog(@"These objects are different");

Когда вы сравниваете строки, вы обычно хотите сравнить текстовое содержимое строк, а не их указателей, поэтому вам следует использовать метод -isEqualToString: для NSString . Этот код вернет Эти строки одинаковы , потому что он сравнивает значение строковых объектов, а не значения их указателей:

NSString* foo = @"Foo";
NSString* bar = [NSString stringWithFormat:@"%@",foo];
if([foo isEqualToString:bar])
    NSLog(@"These strings are the same");
else
    NSLog(@"These string are different");

Для сравнения произвольных объектов Objective-C вы должны использовать более общий isEqual : метод NSObject . -isEqualToString: - это оптимизированная версия -isEqual: , которую следует использовать, если вы знаете, что оба объекта являются объектами NSString .

- (void)CheckKeyWithString:(NSString *)string
{
   //foreach key in NSMutableDictionary
   for(id key in dictobj)
     {
       //Check if key is equal to string
       if([key isEqual:string])
          {
           //do some operation
          }
     }
}
39
ответ дан 1 December 2019 в 19:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: